From 5a2af5419b76e2f79d4ff192ad24e5e15b0d1239 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Mon, 30 Nov 2015 08:42:00 +0300 Subject: [PATCH] WebServer: catch the case when request isn't handled If RequestHandler::canHandle returns true, but subsequent RequestHandler::handle returns false, we should return some HTTP response instead of an empty one. --- libraries/ESP8266WebServer/src/ESP8266WebServer.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp b/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp index fbc23016f..ef5715868 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp @@ -362,19 +362,28 @@ void ESP8266WebServer::onNotFound(THandlerFunction fn) { } void ESP8266WebServer::_handleRequest() { + bool handled = false; if (!_currentHandler){ #ifdef DEBUG DEBUG_OUTPUT.println("request handler not found"); #endif + } + else { + handled = _currentHandler->handle(*this, _currentMethod, _currentUri); +#ifdef DEBUG + if (!handled) { + DEBUG_OUTPUT.println("request handler failed to handle request"); + } +#endif + } + if (!handled) { if(_notFoundHandler) { _notFoundHandler(); } else { send(404, "text/plain", String("Not found: ") + _currentUri); } - } else { - _currentHandler->handle(*this, _currentMethod, _currentUri); } uint16_t maxWait = HTTP_MAX_CLOSE_WAIT;