fix: removeRoute should remove all matching routes (#9851)

This commit is contained in:
Ayush Sharma 2024-06-14 02:55:49 +05:30 committed by GitHub
parent 3428eb6a9e
commit 08ef62531d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -333,15 +333,28 @@ bool WebServer::removeRoute(const String &uri) {
}
bool WebServer::removeRoute(const String &uri, HTTPMethod method) {
// Loop through all request handlers and see if there is a match
bool anyHandlerRemoved = false;
RequestHandler *handler = _firstHandler;
RequestHandler *previousHandler = nullptr;
while (handler) {
if (handler->canHandle(method, uri)) {
return _removeRequestHandler(handler);
if (_removeRequestHandler(handler)) {
anyHandlerRemoved = true;
// Move to the next handler
if (previousHandler) {
handler = previousHandler->next();
} else {
handler = _firstHandler;
}
continue;
}
}
previousHandler = handler;
handler = handler->next();
}
return false;
return anyHandlerRemoved;
}
void WebServer::addHandler(RequestHandler *handler) {