]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Improve reply_body_max_size matching accuracy (#1324)
authorAlex Rousskov <rousskov@measurement-factory.com>
Sat, 22 Apr 2023 16:45:07 +0000 (16:45 +0000)
committerSquid Anubis <squid-anubis@squid-cache.org>
Mon, 24 Apr 2023 16:59:25 +0000 (16:59 +0000)
    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

index 606a3ecafffd39542097b1daae405e0bca92eea1..53e64adb710d2307c7ea293e26c9a394fe8d5c9b 100644 (file)
@@ -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;
     }