fix: removeRoute should remove all matching routes (#9851)
This commit is contained in:
parent
3428eb6a9e
commit
08ef62531d
1 changed files with 16 additions and 3 deletions
|
|
@ -333,15 +333,28 @@ bool WebServer::removeRoute(const String &uri) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WebServer::removeRoute(const String &uri, HTTPMethod method) {
|
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 *handler = _firstHandler;
|
||||||
|
RequestHandler *previousHandler = nullptr;
|
||||||
|
|
||||||
while (handler) {
|
while (handler) {
|
||||||
if (handler->canHandle(method, uri)) {
|
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();
|
handler = handler->next();
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
|
return anyHandlerRemoved;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebServer::addHandler(RequestHandler *handler) {
|
void WebServer::addHandler(RequestHandler *handler) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue