]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
bug4682: When client-first bumping mode is used squid can ignore http access
authorChristos Tsantilas <chtsanti@users.sourceforge.net>
Wed, 3 May 2017 14:43:59 +0000 (17:43 +0300)
committerChristos Tsantilas <chtsanti@users.sourceforge.net>
Wed, 3 May 2017 14:43:59 +0000 (17:43 +0300)
denied

Squid fails to identify HTTP requests which are tunneled inside an already
established client-first bumped tunnel, and this is results to ignore
http access denied for these requests.

This is a Measurement Factory project

src/client_side_request.cc

index 9356429505a04018305fe7c9227b5dd296122006..0f1bf1973d04877a81d1c68663e84b9edf77283b 100644 (file)
@@ -1427,7 +1427,17 @@ ClientRequestContext::sslBumpAccessCheck()
     if (bumpMode != Ssl::bumpEnd) {
         debugs(85, 5, HERE << "SslBump already decided (" << bumpMode <<
                "), " << "ignoring ssl_bump for " << http->getConn());
-        if (!http->getConn()->serverBump())
+        
+        // We need the following "if" for transparently bumped TLS connection,
+        // because in this case we are running ssl_bump access list before
+        // the doCallouts runs. It can be removed after the bug #4340 fixed.
+        // We do not want to proceed to bumping steps:
+        //  - if the TLS connection with the client is already established
+        //    because we are accepting normal HTTP requests on TLS port,
+        //    or because of the client-first bumping mode
+        //  - When the bumping is already started
+        if (!http->getConn()->switchedToHttps() &&
+            !http->getConn()->serverBump())
             http->sslBumpNeed(bumpMode); // for processRequest() to bump if needed and not already bumped
         http->al->ssl.bumpMode = bumpMode; // inherited from bumped connection
         return false;