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