]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Pull request #4731: appid: fix AppIdInspector hanging during tterm
authorAndres Avila Segura (aavilase) <aavilase@cisco.com>
Wed, 4 Jun 2025 20:06:26 +0000 (20:06 +0000)
committerChris Sherwin (chsherwi) <chsherwi@cisco.com>
Wed, 4 Jun 2025 20:06:26 +0000 (20:06 +0000)
Merge in SNORT/snort3 from ~AAVILASE/snort3:tp_fini_hanging_fix to master

Squashed commit of the following:

commit 5bab58a64439c65206c860a38e7d0bd13583a79d
Author: Andres Avila <aavilase@cisco.com>
Date:   Tue Jun 3 16:49:19 2025 -0400

    appid: broadcast command for third party tfini during tterm rather than doing it sequentially

src/network_inspectors/appid/appid_inspector.cc
src/network_inspectors/appid/appid_inspector.h

index 9af66f07552a4e1ea2e86d4912658cdb6e241067..5e51136910ce5baca8f119396d16de4e5ced67e2 100644 (file)
@@ -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();
index 7b8b1b6596c6fe5df7996608ca41500232b5e03b..5a29c205e11766734c8542a2684205ac64713e55 100644 (file)
@@ -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;