From: Andres Avila Segura (aavilase) Date: Wed, 4 Jun 2025 20:06:26 +0000 (+0000) Subject: Pull request #4731: appid: fix AppIdInspector hanging during tterm X-Git-Tag: 3.9.1.0~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3ecbd72aee9d8b02777de728c69cd3de0ccce17f;p=thirdparty%2Fsnort3.git Pull request #4731: appid: fix AppIdInspector hanging during tterm Merge in SNORT/snort3 from ~AAVILASE/snort3:tp_fini_hanging_fix to master Squashed commit of the following: commit 5bab58a64439c65206c860a38e7d0bd13583a79d Author: Andres Avila Date: Tue Jun 3 16:49:19 2025 -0400 appid: broadcast command for third party tfini during tterm rather than doing it sequentially --- diff --git a/src/network_inspectors/appid/appid_inspector.cc b/src/network_inspectors/appid/appid_inspector.cc index 9af66f075..5e5113691 100644 --- a/src/network_inspectors/appid/appid_inspector.cc +++ b/src/network_inspectors/appid/appid_inspector.cc @@ -210,6 +210,12 @@ void AppIdInspector::tinit() ServiceDiscovery::set_thread_local_ftp_service(); } +void AppIdInspector::third_party_tfini() +{ + while (pkt_thread_tp_appid_ctxt->tfini()) + ; +} + void AppIdInspector::tterm() { AppIdStatistics::cleanup(); @@ -218,7 +224,7 @@ void AppIdInspector::tterm() delete odp_thread_local_ctxt; odp_thread_local_ctxt = nullptr; if (pkt_thread_tp_appid_ctxt) - pkt_thread_tp_appid_ctxt->tfini(); + third_party_tfini(); if ( snort::HighAvailabilityManager::active() ) AppIdHAManager::tterm(); ServiceDiscovery::reset_thread_local_ftp_service(); diff --git a/src/network_inspectors/appid/appid_inspector.h b/src/network_inspectors/appid/appid_inspector.h index 7b8b1b659..5a29c205e 100644 --- a/src/network_inspectors/appid/appid_inspector.h +++ b/src/network_inspectors/appid/appid_inspector.h @@ -59,6 +59,7 @@ private: AppIdContext ctxt; static unsigned cached_global_pub_id; void third_party_tinit(); + void third_party_tfini(); }; extern const snort::InspectApi appid_inspector_api;