From: Alex Rousskov Date: Sun, 9 Jan 2022 10:41:24 +0000 (+0000) Subject: Bug 5132: Close the tunnel if to-server conn closes after client (#957) X-Git-Tag: SQUID_5_4~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=54ad10efe146c863bdadee0d1161299ea89f5419;p=thirdparty%2Fsquid.git Bug 5132: Close the tunnel if to-server conn closes after client (#957) 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. --- diff --git a/src/tunnel.cc b/src/tunnel.cc index eb06544032..159669be5d 100644 --- a/src/tunnel.cc +++ b/src/tunnel.cc @@ -316,6 +316,8 @@ void TunnelStateData::serverClosed() { server.noteClosure(); + + retryOrBail(__FUNCTION__); } /// TunnelStateData::clientClosed() wrapper @@ -418,9 +420,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();