]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Bug 3111: Mid-term fix for the forward.cc "err" assertion.
authorAlex Rousskov <rousskov@measurement-factory.com>
Mon, 28 Jan 2013 04:13:51 +0000 (21:13 -0700)
committerAmos Jeffries <squid3@treenet.co.nz>
Mon, 28 Jan 2013 04:13:51 +0000 (21:13 -0700)
The assert is triggered when a close handler for the server connection
destroys FwdState before we have received anything from the origin
server.
Instead of asserting, we now respond with a 502 (Bad Gateway)
ERR_READ_ERROR.

That error seems the most appropriate single choice among available
ones, but
it may be misleading (in access.log) when the close handler was called
due to
client problems. Hopefully, another error will be logged in most of
those
cases.

src/forward.cc

index f51f57b8073a8d2fbb397621441be51afede4b7c..00e0b7877a7b1d97f7ff1274e4eec2dbd6d6d0b5 100644 (file)
@@ -220,6 +220,8 @@ FwdState::completed()
 
     if (entry->store_status == STORE_PENDING) {
         if (entry->isEmpty()) {
+            if (!err) // we quit (e.g., fd closed) before an error or content
+                fail(new ErrorState(ERR_READ_ERROR, HTTP_BAD_GATEWAY, request));
             assert(err);
             errorAppendEntry(entry, err);
             err = NULL;