]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Bug 5132: Close the tunnel if to-server conn closes after client (#957)
authorAlex Rousskov <rousskov@measurement-factory.com>
Sun, 9 Jan 2022 10:41:24 +0000 (10:41 +0000)
committerSquid Anubis <squid-anubis@squid-cache.org>
Sun, 9 Jan 2022 10:41:26 +0000 (10:41 +0000)
Since commit 25d2603, blind CONNECT tunnel "jobs" (and equivalent) were
not destroyed upon a "lonely" to-server connection closure, leading to
memory leaks. And when a from-client connection was still present at the
time of the to-server connection closure, we did not try to reforward,
violating the spirit of commit 25d2603 changes. Calling retryOrBail() is
sufficient to handle both cases.

src/tunnel.cc

index b347c62529a3594733c713c0626f6f7ae1a12ee8..78f408ded0e7596422d04b7ab9bd7ad104714cbd 100644 (file)
@@ -318,6 +318,8 @@ void
 TunnelStateData::serverClosed()
 {
     server.noteClosure();
+
+    retryOrBail(__FUNCTION__);
 }
 
 /// TunnelStateData::clientClosed() wrapper
@@ -417,9 +419,6 @@ TunnelStateData::checkRetry()
 void
 TunnelStateData::retryOrBail(const char *context)
 {
-    // Since no TCP payload has been passed to client or server, we may
-    // TCP-connect to other destinations (including alternate IPs).
-
     assert(!server.conn);
 
     const auto *bailDescription = checkRetry();