From 1eaa1c1361c5f5e8fa16288803d14d57ff37412f Mon Sep 17 00:00:00 2001 From: Th3maz1ng Date: Wed, 25 Dec 2019 21:07:11 +0100 Subject: [PATCH] Added a new state to the state machine for consistency --- src/app/WEBServer.h | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/app/WEBServer.h b/src/app/WEBServer.h index e570d50..c85a49b 100644 --- a/src/app/WEBServer.h +++ b/src/app/WEBServer.h @@ -15,7 +15,7 @@ class WEBServer : public TCPServer enum HttpVersion {UNKNOWN, HTTP_0_9, HTTP_1_1, HTTP_1_0, HTTP_2_0}; enum HttpMIMEType{UNKNOWN_MIME, TEXT_PLAIN, TEXT_CSS, TEXT_HTML, TEXT_JAVASCRIPT, APPLICATION_JSON, APPLICATION_X_WWW_FORM_URLENCODED, IMAGE_PNG, IMAGE_JPEG, AUDIO_MPEG, APPLICATION_OCTET_STREAM}; enum HttpParserStatus {HTTP_VERB, HTTP_RESSOURCE, HTTP_VERSION, HTTP_PARAMS, POST_DATA, HEADER_PARAMS}; - enum WEBClientState {ACCEPTED, QUERY_PARSED, RESPONSE_SENT, DONE}; + enum WEBClientState {ACCEPTED, PARSING, QUERY_PARSED, RESPONSE_SENT, DONE}; enum HTTP_CODE {_100, _101, _200, _400, _401, _403, _404, _405, _500, _501}; struct HttpRequestData @@ -82,6 +82,9 @@ class WEBServer : public TCPServer #ifdef DEBUG_WEBS Serial.println("WEBServer : ACCEPTED"); #endif + client->_WEBClientState = WEBClientState::PARSING; + break; + case PARSING: queryParser(client); break; case QUERY_PARSED: @@ -142,7 +145,6 @@ class WEBServer : public TCPServer { sendInfoResponse(HTTP_CODE::_400, client, "The server could not understand the request due to invalid syntax"); client->_clientState = TCPClient::ClientState::DISCARDED; - break; } } break; @@ -202,6 +204,9 @@ class WEBServer : public TCPServer case HttpParserStatus::HTTP_VERSION: { char *pEndline = strstr((char *)client->_data, "\r\n"); + + if(pEndline == NULL) pEndline = strstr((char *)client->_data, "\n"); + char *pVers = strstr((char *)client->_data, "HTTP/"); if(pEndline != NULL && pVers!= NULL) @@ -390,6 +395,9 @@ class WEBServer : public TCPServer } else //nothing to parse or done { + #ifdef DEBUG_WEBS + Serial.println("Nothing to parse or done"); + #endif return false; }