From 213387b88f2cc74eddc24a94d209431ca5467d26 Mon Sep 17 00:00:00 2001 From: Zhenyu Wu Date: Sun, 22 Jan 2017 05:47:21 -0500 Subject: [PATCH] Convert resursive call to iterations, reduce stack usage (#120) --- src/WebRequest.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/WebRequest.cpp b/src/WebRequest.cpp index 74eed41..501d227 100644 --- a/src/WebRequest.cpp +++ b/src/WebRequest.cpp @@ -96,6 +96,8 @@ AsyncWebServerRequest::~AsyncWebServerRequest(){ } void AsyncWebServerRequest::_onData(void *buf, size_t len){ + while (true) { + if(_parseState < PARSE_REQ_BODY){ // Find new line in buf char *str = (char*)buf; @@ -112,7 +114,12 @@ void AsyncWebServerRequest::_onData(void *buf, size_t len){ _temp.concat(str); _temp.trim(); _parseLine(); - if (++i < len) _onData(str+i, len-i); // Still have more buffer to process + if (++i < len) { + // Still have more buffer to process + buf = str+i; + len-= i; + continue; + } } } else if(_parseState == PARSE_REQ_BODY){ if(_isMultipart){ @@ -153,6 +160,9 @@ void AsyncWebServerRequest::_onData(void *buf, size_t len){ else send(501); } } + + break; + } } void AsyncWebServerRequest::_onPoll(){