From 729b9c223e6a8697e6e9bab03bd3b2fc191b38d0 Mon Sep 17 00:00:00 2001 From: Me No Dev Date: Mon, 1 Feb 2016 01:42:45 +0200 Subject: [PATCH] Make ResponseStream resize when needed and actually work --- src/WebResponses.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/WebResponses.cpp b/src/WebResponses.cpp index c49f76c..87f6d1c 100644 --- a/src/WebResponses.cpp +++ b/src/WebResponses.cpp @@ -289,7 +289,7 @@ size_t AsyncAbstractResponse::_ack(AsyncWebServerRequest *request, size_t len, u if(!_sendContentLength || _ackedLength >= (_headLength+_contentLength)){ _state = RESPONSE_END; if(!_chunked && !_sendContentLength) - request->client()->close(); + request->client()->close(true); } } return 0; @@ -423,10 +423,13 @@ size_t AsyncResponseStream::_fillBuffer(uint8_t *buf, size_t maxLen){ } size_t AsyncResponseStream::write(const uint8_t *data, size_t len){ - if(_finished() || (_content->room() == 0 && ETS_INTR_WITHINISR())) + if(_finished()) return 0; - if(len > _content->available()) - len = _content->available(); + + if(len > _content->room()){ + size_t needed = len - _content->room(); + _content->resizeAdd(needed); + } return _content->write((const char*)data, len); }