On Thu, Apr 13, 2006, Adrian Chadd wrote:
> I've found a problem with the connection pinning:
> 
> 2006/04/13 11:50:25| fwdConnectStart: Pinned connection to 
> mail.aiondiagnostics.com:80 gone, aborting request
> 2006/04/13 11:50:25| assertion failed: forward.c:114: "!EBIT_TEST(e->flags, 
> ENTRY_FWD_HDR_WAIT)"

Here's the patch, which doesn't crash. I am not convinced its the "right"
thing to do as I don't quite understand what the semantics of connection
pinning should be.

--- src/forward.c       e2fc1a6c5fd200cd0174d0c5c2743c0e2c4942be
+++ src/forward.c       9f95615544cf9a25014da9175125f91f684b9fce
@@ -406,7 +406,10 @@
                fd = getPinnedFD(fwdState->request->pinned_connection, 
fwdState->request);
        if (fd < 0) {
            debug(17, 1) ("fwdConnectStart: Pinned connection to %s:%d gone, 
aborting request\n", fwdState->request->host, fwdState->request->port);
-           storeAbort(fwdState->entry);
+           //storeAbort(fwdState->entry);
+            err = errorCon(ERR_CONNECT_FAIL, HTTP_SERVICE_UNAVAILABLE);
+            err->xerrno = errno;
+            fwdFail(fwdState, err);
            return;
        }
        fwdState->server_fd = fd;

This should make squid retry the connection to the server. Is this what
it should do? Are there any documents outlining what the behaviour
"should" be?




Adrian

Reply via email to