Skip to content

Commit b5ebbf1

Browse files
committed
fix: removeRoute should remove all matching routes
1 parent 1d895e5 commit b5ebbf1

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
@@ -331,15 +331,28 @@ bool WebServer::removeRoute(const String &uri) {
331331
}
332332

333333
bool WebServer::removeRoute(const String &uri, HTTPMethod method) {
334-
// Loop through all request handlers and see if there is a match
334+
bool anyHandlerRemoved = false;
335335
RequestHandler *handler = _firstHandler;
336+
RequestHandler *previousHandler = nullptr;
337+
336338
while (handler) {
337339
if (handler->canHandle(method, uri)) {
338-
return _removeRequestHandler(handler);
340+
if (_removeRequestHandler(handler)) {
341+
anyHandlerRemoved = true;
342+
// Move to the next handler
343+
if (previousHandler) {
344+
handler = previousHandler->next();
345+
} else {
346+
handler = _firstHandler;
347+
}
348+
continue;
349+
}
339350
}
351+
previousHandler = handler;
340352
handler = handler->next();
341353
}
342-
return false;
354+
355+
return anyHandlerRemoved;
343356
}
344357

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

0 commit comments

Comments
 (0)