]> 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)
committerAmos Jeffries <yadij@users.noreply.github.com>
Wed, 26 Apr 2023 09:58:19 +0000 (21:58 +1200)
    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 6da1cf36fd407b5067a17e2cbd126de7c244512f..e6e9f8cd81764143b4e076f40f3e244ac1f79129 100644 (file)
@@ -1336,8 +1336,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;
     }