From: Christos Tsantilas Date: Tue, 25 Sep 2012 13:58:44 +0000 (+0300) Subject: SslBump stuck after error X-Git-Tag: SQUID_3_3_0_1~41 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=480e52198df9056b29a64fc6ef1297d0efdfb727;p=thirdparty%2Fsquid.git SslBump stuck after error When bump-server-first code in trunk encounters a certificate validation error, the corresponding CONNECT transaction gets stuck. --- diff --git a/src/forward.cc b/src/forward.cc index 4ad233451e..75da0f3583 100644 --- a/src/forward.cc +++ b/src/forward.cc @@ -214,6 +214,12 @@ FwdState::completed() assert(err); errorAppendEntry(entry, err); err = NULL; +#if USE_SSL + if (request->flags.sslPeek && request->clientConnectionManager.valid()) { + CallJobHere1(17, 4, request->clientConnectionManager, ConnStateData, + ConnStateData::httpsPeeked, Comm::ConnectionPointer(NULL)); + } +#endif } else { EBIT_CLR(entry->flags, ENTRY_FWD_HDR_WAIT); entry->complete(); @@ -369,14 +375,6 @@ FwdState::startConnectionOrFail() ErrorState *anErr = new ErrorState(ERR_CANNOT_FORWARD, HTTP_INTERNAL_SERVER_ERROR, request); fail(anErr); } // else use actual error from last connection attempt -#if USE_SSL - if (request->flags.sslPeek && request->clientConnectionManager.valid()) { - errorAppendEntry(entry, err); // will free err - err = NULL; - CallJobHere1(17, 4, request->clientConnectionManager, ConnStateData, - ConnStateData::httpsPeeked, Comm::ConnectionPointer(NULL)); - } -#endif self = NULL; // refcounted } } @@ -828,7 +826,6 @@ FwdState::initiateSSL() // The list is used in ssl_verify_cb() and is freed in ssl_free(). if (acl_access *acl = Config.ssl_client.cert_error) { ACLFilledChecklist *check = new ACLFilledChecklist(acl, request, dash_str); - check->fd(fd); SSL_set_ex_data(ssl, ssl_ex_index_cert_error_check, check); }