Added a new state to the state machine for consistency

This commit is contained in:
Th3maz1ng 2019-12-25 21:07:11 +01:00
parent 82db9489f7
commit 1eaa1c1361

View File

@ -15,7 +15,7 @@ class WEBServer : public TCPServer<T>
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<T>
#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<T>
{
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<T>
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<T>
}
else //nothing to parse or done
{
#ifdef DEBUG_WEBS
Serial.println("Nothing to parse or done");
#endif
return false;
}