diff --git a/src/app/TCPServer.h b/src/app/TCPServer.h index e237c81..8b7083f 100644 --- a/src/app/TCPServer.h +++ b/src/app/TCPServer.h @@ -140,9 +140,9 @@ class TCPServer if(_currentClient->_dataSize > 0) { - processClientData(_currentClient);//We process the actual data _currentClient->_newDataAvailable = false; } + processClientData(_currentClient);//We process the actual data if(_currentClient->_clientState == TCPClient::ClientState::DISCARDED) { diff --git a/src/app/WEBServer.h b/src/app/WEBServer.h index 794404a..453f230 100644 --- a/src/app/WEBServer.h +++ b/src/app/WEBServer.h @@ -34,7 +34,7 @@ class WEBServer : public TCPServer uint16_t maxBodyBuffer; }; - WEBServer(unsigned int port = 80, SDCardManager *sdCardManager = NULL, uint8_t maxClient = MAX_CLIENT, uint16_t clientDataBufferSize = 512) : TCPServer(port, maxClient, clientDataBufferSize), _sdCardManager(sdCardManager) {} + WEBServer(unsigned int port = 80, SDCardManager *sdCardManager = NULL, uint8_t maxClient = MAX_CLIENT, uint16_t clientDataBufferSize = 255) : TCPServer(port, maxClient, clientDataBufferSize), _sdCardManager(sdCardManager) {} boolean addApiRoutine(const char *uri, boolean (*apiRoutine)(HttpRequestData&, WiFiClient*, void*), void *pData, HttpRequestMethod HRM = UNDEFINED) { @@ -51,7 +51,7 @@ class WEBServer : public TCPServer private: virtual T* createNewClient(WiFiClient wc) { - return new T(wc, TCPServer::freeClientId()); + return new T(wc, TCPServer::freeClientId(), TCPServer::_clientDataBufferSize); } virtual void greetClient(T *client) @@ -61,33 +61,36 @@ class WEBServer : public TCPServer virtual void processClientData(T *client) { - switch(client->_WEBClientState) + if(client->_dataSize > 0) { - case ACCEPTED: - #ifdef DEBUG_WEBS - Serial.println("WEBServer : ACCEPTED"); - #endif - queryParser(client); - break; - case QUERY_PARSED: - #ifdef DEBUG_WEBS - Serial.println("WEBServer : QUERY_PARSED"); - #endif - sendDataToClient(client); - break; - case RESPONSE_SENT: - #ifdef DEBUG_WEBS - Serial.println("WEBServer : RESPONSE_SENT"); - #endif - client->_WEBClientState = WEBClientState::DONE; - break; - case DONE: - #ifdef DEBUG_WEBS - Serial.println("WEBServer : DONE"); - #endif - client->_clientState = TCPClient::ClientState::DISCARDED; - break; - } + switch(client->_WEBClientState) + { + case ACCEPTED: + #ifdef DEBUG_WEBS + Serial.println("WEBServer : ACCEPTED"); + #endif + queryParser(client); + break; + case QUERY_PARSED: + #ifdef DEBUG_WEBS + Serial.println("WEBServer : QUERY_PARSED"); + #endif + sendDataToClient(client); + break; + case RESPONSE_SENT: + #ifdef DEBUG_WEBS + Serial.println("WEBServer : RESPONSE_SENT"); + #endif + client->_WEBClientState = WEBClientState::DONE; + break; + case DONE: + #ifdef DEBUG_WEBS + Serial.println("WEBServer : DONE"); + #endif + client->_clientState = TCPClient::ClientState::DISCARDED; + break; + } + } } void queryParser(T *client) diff --git a/src/app/versions.h b/src/app/versions.h index fe67fb9..0cfb552 100644 --- a/src/app/versions.h +++ b/src/app/versions.h @@ -17,5 +17,6 @@ #define SOFT_VERSION "1.2.1" //Corrected a bug in the TaskSchedulerManager class #define SOFT_VERSION "1.3.0" //Implemented multi-client non blocking webserver #define SOFT_VERSION "1.3.1" //Fixed sdCardUnmount api call +#define SOFT_VERSION "1.3.2" //Modified TCPServer and WEBServer core logic #endif //VERSIONS_H