Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions src/ESPAsyncWebServer.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
12 changes: 4 additions & 8 deletions src/WebResponses.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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
Expand All @@ -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;
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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<char *>(_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)
Expand All @@ -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;
}

Expand Down Expand Up @@ -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
Expand Down
Loading