After a timeout we cannot reuse the TCP connection to the backend
anyway, so let's release it immediately.
if (d_ioState) {
d_ioState.reset();
}
+
+ auto shared = std::dynamic_pointer_cast<TCPConnectionToBackend>(shared_from_this());
+ if (!willBeReusable(true)) {
+ /* remove ourselves from the connection cache, this might mean that our
+ reference count drops to zero after that, so we need to be careful */
+ t_downstreamTCPConnectionsManager.removeDownstreamConnection(shared);
+ }
}
static uint32_t getSerialFromRawSOAContent(const std::vector<uint8_t>& raw)
g_tcpRecvTimeout = 2;
/* we need to clear them now, otherwise we end up with dangling pointers to the steps via the TLS context, etc */
- /* we have one connection to clear, no proxy protocol */
- BOOST_CHECK_EQUAL(IncomingTCPConnectionState::clearAllDownstreamConnections(), 1U);
+ /* we have no connection to clear, because there was a timeout! */
+ BOOST_CHECK_EQUAL(IncomingTCPConnectionState::clearAllDownstreamConnections(), 0U);
}
{