diff --git a/src/ESPAsyncWebServer.h b/src/ESPAsyncWebServer.h index b688528cc..b29684bd9 100644 --- a/src/ESPAsyncWebServer.h +++ b/src/ESPAsyncWebServer.h @@ -1717,8 +1717,6 @@ class AsyncWebServerResponse { // amount of data sent for content part of the response (excluding all headers) size_t _sentLength; size_t _ackedLength; - // amount of response bytes (including all headers) written to sockbuff for delivery - size_t _writtenLength; WebResponseState _state; static bool headerMustBePresentOnce(const String &name); diff --git a/src/WebResponses.cpp b/src/WebResponses.cpp index f1789a431..9af04e744 100644 --- a/src/WebResponses.cpp +++ b/src/WebResponses.cpp @@ -74,7 +74,7 @@ STR_RETURN_TYPE AsyncWebServerResponse::responseCodeToString(int code) { } AsyncWebServerResponse::AsyncWebServerResponse() - : _code(0), _contentType(), _contentLength(0), _sendContentLength(true), _chunked(false), _headLength(0), _sentLength(0), _ackedLength(0), _writtenLength(0), + : _code(0), _contentType(), _contentLength(0), _sendContentLength(true), _chunked(false), _headLength(0), _sentLength(0), _ackedLength(0), _state(RESPONSE_SETUP) { for (const auto &header : DefaultHeaders::Instance()) { _headers.emplace_back(header); @@ -303,7 +303,6 @@ size_t AsyncBasicResponse::write_send_buffs(AsyncWebServerRequest *request, size if (_state == RESPONSE_HEADERS) { // copy headers buffer to sock buffer size_t const pcb_written = request->client()->add(_assembled_headers.c_str() + _writtenHeadersLength, _assembled_headers.length() - _writtenHeadersLength); - _writtenLength += pcb_written; _writtenHeadersLength += pcb_written; if (_writtenHeadersLength < _assembled_headers.length()) { // we were not able to fit all headers in current buff, send this part here and return later for the rest @@ -322,9 +321,8 @@ size_t AsyncBasicResponse::write_send_buffs(AsyncWebServerRequest *request, size if (_state == RESPONSE_CONTENT) { size_t const pcb_written = request->client()->write(_content.c_str() + _sentLength, _content.length() - _sentLength); - _writtenLength += pcb_written; // total written data (hdrs + body) - _sentLength += pcb_written; // body written data - payloadlen += pcb_written; // data writtent in current buff + _sentLength += pcb_written; // body written data + payloadlen += pcb_written; // data writtent in current buff if (_sentLength >= _content.length()) { // we've just sent all the (remainder) data in current buff, complete the response _state = RESPONSE_END; @@ -404,7 +402,6 @@ size_t AsyncAbstractResponse::write_send_buffs(AsyncWebServerRequest *request, s if (_state == RESPONSE_HEADERS) { // copy headers buffer to sock buffer size_t const pcb_written = request->client()->add(_assembled_headers.c_str() + _writtenHeadersLength, _assembled_headers.length() - _writtenHeadersLength); - _writtenLength += pcb_written; _writtenHeadersLength += pcb_written; if (_writtenHeadersLength < _assembled_headers.length()) { // we were not able to fit all headers in current buff, send this part here and return later for the rest @@ -437,6 +434,7 @@ size_t AsyncAbstractResponse::write_send_buffs(AsyncWebServerRequest *request, s // data is pending in buffer from a previous call or previous iteration; attempt to send it size_t const added_len = request->client()->add(reinterpret_cast(_send_buffer->data() + _send_buffer_offset), _send_buffer_len - _send_buffer_offset); + payloadlen += added_len; if (added_len != _send_buffer_len - _send_buffer_offset) { // we were not able to add entire buffer's content to tcp buffs, leave it for later // (this should not happen normally unless connection's TCP window suddenly changed from remote or mem pressure) @@ -445,7 +443,6 @@ size_t AsyncAbstractResponse::write_send_buffs(AsyncWebServerRequest *request, s } else { _send_buffer_len = _send_buffer_offset = 0; // consider buffer empty } - payloadlen += added_len; tcp_win -= added_len; } @@ -519,7 +516,6 @@ size_t AsyncAbstractResponse::write_send_buffs(AsyncWebServerRequest *request, s // execute sending whatever we have in sock buffs now request->client()->send(); - _writtenLength += payloadlen; #if ASYNCWEBSERVER_USE_CHUNK_INFLIGHT // Take a credit only for data actually put in flight. When the source // had nothing yet (RESPONSE_TRY_AGAIN), nothing will be acked to return