Added a new state to the state machine for consistency
This commit is contained in:
parent
82db9489f7
commit
1eaa1c1361
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user