From 967739d64bedd17821a49f0e0de5ead35dc6f2d3 Mon Sep 17 00:00:00 2001 From: Alex Rousskov Date: Sat, 22 Apr 2023 16:45:07 +0000 Subject: [PATCH] Improve reply_body_max_size matching accuracy (#1324) HttpReply.cc(553) receivedBodyTooLarge: -4096 >? -1 ClientHttpRequest::out.offset is documented to only count body bytes, and that is what receivedBodyTooLarge() needs. We should not subtract the guessed header size, occasionally violating reply_body_max_size configuration and often leading to a confusing negative body size in receivedBodyTooLarge() debugging. Possibly broken since 2003 commit b51aec6: out.offset was not documented back then, but, AFAICT, it was already used just for the body bytes. --- src/client_side_reply.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/client_side_reply.cc b/src/client_side_reply.cc index 0004137cbc..7922942f66 100644 --- a/src/client_side_reply.cc +++ b/src/client_side_reply.cc @@ -1198,8 +1198,7 @@ clientReplyContext::replyStatus() } // XXX: Should this be checked earlier? We could return above w/o checking. - if (reply->receivedBodyTooLarge(*http->request, http->out.offset - 4096)) { - /* 4096 is a margin for the HTTP headers included in out.offset */ + if (reply->receivedBodyTooLarge(*http->request, http->out.offset)) { debugs(88, 5, "clientReplyStatus: client reply body is too large"); return STREAM_FAILED; } -- 2.47.2