From: Alan T. DeKok Date: Wed, 4 Aug 2021 23:05:10 +0000 (-0400) Subject: Status-Server packets are left in the TCP proxy hash X-Git-Tag: release_3_0_24~68 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=edadb9e39d31dccf4e07b41cf7cc4601edd90274;p=thirdparty%2Ffreeradius-server.git Status-Server packets are left in the TCP proxy hash until such time as the listener is being shut down --- diff --git a/src/main/process.c b/src/main/process.c index f309092ce0d..38b49360e40 100644 --- a/src/main/process.c +++ b/src/main/process.c @@ -2298,6 +2298,18 @@ static void remove_from_proxy_hash(REQUEST *request) */ if (!request->in_proxy_hash) return; +#ifdef WITH_TCP + /* + * Status-Server packets aren't removed from the proxy hash. They're reused. + * + * Unless we're tearing down the listener. + */ + if ((request->proxy->proto == IPPROTO_TCP) && (request->proxy->code == PW_CODE_STATUS_SERVER) && + request->proxy_listener && (request->proxy_listener->status < RAD_LISTEN_STATUS_EOL)) { + return; + } +#endif + /* * The "not in hash" flag is definitive. However, if the * flag says that it IS in the hash, there might still be