Skip to content

Commit 08ef625

Browse files
fix: removeRoute should remove all matching routes (#9851)
1 parent 3428eb6 commit 08ef625

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

Diff for: libraries/WebServer/src/WebServer.cpp

+16-3
Original file line numberDiff line numberDiff line change
@@ -333,15 +333,28 @@ bool WebServer::removeRoute(const String &uri) {
333333
}
334334

335335
bool WebServer::removeRoute(const String &uri, HTTPMethod method) {
336-
// Loop through all request handlers and see if there is a match
336+
bool anyHandlerRemoved = false;
337337
RequestHandler *handler = _firstHandler;
338+
RequestHandler *previousHandler = nullptr;
339+
338340
while (handler) {
339341
if (handler->canHandle(method, uri)) {
340-
return _removeRequestHandler(handler);
342+
if (_removeRequestHandler(handler)) {
343+
anyHandlerRemoved = true;
344+
// Move to the next handler
345+
if (previousHandler) {
346+
handler = previousHandler->next();
347+
} else {
348+
handler = _firstHandler;
349+
}
350+
continue;
351+
}
341352
}
353+
previousHandler = handler;
342354
handler = handler->next();
343355
}
344-
return false;
356+
357+
return anyHandlerRemoved;
345358
}
346359

347360
void WebServer::addHandler(RequestHandler *handler) {

0 commit comments

Comments
 (0)