From a6d8253b15608ddac0cfa60467ce4f08aa0edc1b Mon Sep 17 00:00:00 2001 From: Me No Dev Date: Thu, 16 Jul 2015 21:39:09 +0300 Subject: [PATCH] fix plain post slowdown --- libraries/ESP8266WebServer/src/Parsing.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/libraries/ESP8266WebServer/src/Parsing.cpp b/libraries/ESP8266WebServer/src/Parsing.cpp index 88877372a..e47be4386 100644 --- a/libraries/ESP8266WebServer/src/Parsing.cpp +++ b/libraries/ESP8266WebServer/src/Parsing.cpp @@ -108,20 +108,22 @@ bool ESP8266WebServer::_parseRequest(WiFiClient& client) { if (!isForm){ if (searchStr != "") searchStr += '&'; - String bodyLine = client.readStringUntil('\r'); + size_t plainLen = client.available(); + char *plainBuf = (char*)malloc(plainLen+1); + client.readBytes(plainBuf, plainLen); + plainBuf[plainLen] = '\0'; #ifdef DEBUG DEBUG_OUTPUT.print("Plain: "); - DEBUG_OUTPUT.println(bodyLine); + DEBUG_OUTPUT.println(plainBuf); #endif - if(bodyLine.startsWith("{") || bodyLine.startsWith("[") || bodyLine.indexOf('=') == -1){ + if(plainBuf[0] == '{' || plainBuf[0] == '[' || strstr(plainBuf, "=") == NULL){ //plain post json or other data searchStr += "plain="; - searchStr += bodyLine; - searchStr += client.readString(); + searchStr += plainBuf; } else { - searchStr += bodyLine; - client.readStringUntil('\n'); + searchStr += plainBuf; } + free(plainBuf); } _parseArguments(searchStr); if (isForm){