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 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 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 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};
|
enum HTTP_CODE {_100, _101, _200, _400, _401, _403, _404, _405, _500, _501};
|
||||||
|
|
||||||
struct HttpRequestData
|
struct HttpRequestData
|
||||||
@ -82,6 +82,9 @@ class WEBServer : public TCPServer<T>
|
|||||||
#ifdef DEBUG_WEBS
|
#ifdef DEBUG_WEBS
|
||||||
Serial.println("WEBServer : ACCEPTED");
|
Serial.println("WEBServer : ACCEPTED");
|
||||||
#endif
|
#endif
|
||||||
|
client->_WEBClientState = WEBClientState::PARSING;
|
||||||
|
break;
|
||||||
|
case PARSING:
|
||||||
queryParser(client);
|
queryParser(client);
|
||||||
break;
|
break;
|
||||||
case QUERY_PARSED:
|
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");
|
sendInfoResponse(HTTP_CODE::_400, client, "The server could not understand the request due to invalid syntax");
|
||||||
client->_clientState = TCPClient::ClientState::DISCARDED;
|
client->_clientState = TCPClient::ClientState::DISCARDED;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -202,6 +204,9 @@ class WEBServer : public TCPServer<T>
|
|||||||
case HttpParserStatus::HTTP_VERSION:
|
case HttpParserStatus::HTTP_VERSION:
|
||||||
{
|
{
|
||||||
char *pEndline = strstr((char *)client->_data, "\r\n");
|
char *pEndline = strstr((char *)client->_data, "\r\n");
|
||||||
|
|
||||||
|
if(pEndline == NULL) pEndline = strstr((char *)client->_data, "\n");
|
||||||
|
|
||||||
char *pVers = strstr((char *)client->_data, "HTTP/");
|
char *pVers = strstr((char *)client->_data, "HTTP/");
|
||||||
|
|
||||||
if(pEndline != NULL && pVers!= NULL)
|
if(pEndline != NULL && pVers!= NULL)
|
||||||
@ -390,6 +395,9 @@ class WEBServer : public TCPServer<T>
|
|||||||
}
|
}
|
||||||
else //nothing to parse or done
|
else //nothing to parse or done
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG_WEBS
|
||||||
|
Serial.println("Nothing to parse or done");
|
||||||
|
#endif
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user