]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Pull request #4762: mp_dbus: transfer ownership of MPDataBus to new config during...
authorOleksandr Stepanov -X (ostepano - SOFTSERVE INC at Cisco) <ostepano@cisco.com>
Fri, 30 May 2025 14:42:19 +0000 (14:42 +0000)
committerChris Sherwin (chsherwi) <chsherwi@cisco.com>
Fri, 30 May 2025 14:42:19 +0000 (14:42 +0000)
Merge in SNORT/snort3 from ~OSTEPANO/snort3:transport_reload to master

Squashed commit of the following:

commit e56c55c2eddeb7b41107f79ca5a78ce1e3c96a35
Author: Oleksandr Stepanov <ostepano@cisco.com>
Date:   Tue May 27 12:52:08 2025 -0400

    mp_dbus: transfer ownership of MPDataBus to new config during reload

src/main.cc
src/main/swapper.cc

index cdc9ae17ecdaa4a8bf6d8269e2dde3a1f529a7d4..4e5e0e91c81544ec8b7952b66e8b8dbef428e055 100644 (file)
@@ -560,6 +560,19 @@ int main_reload_config(lua_State* L)
     TraceApi::thread_reinit(sc->trace_config);
     proc_stats.conf_reloads++;
 
+    if(sc->max_procs > 1)
+    {
+        if (old and old->mp_dbus != nullptr)
+        {
+            sc->mp_dbus = old->mp_dbus;
+        }
+        else
+        {
+            sc->mp_dbus = new MPDataBus();
+            sc->mp_dbus->init(sc->max_procs);
+        }
+    }
+
     ReloadTracker::update(ctrlcon, "start swapping configuration ...");
     send_response(ctrlcon, ".. swapping configuration\n");
     main_broadcast_command(new ACSwap(new Swapper(old, sc), ctrlcon), ctrlcon);
index f86de53f78b5a9af63a670ef2c7f9fce4eb35d81..57631e993b869051566afddc190462e4e374fb41 100644 (file)
@@ -52,9 +52,15 @@ Swapper::Swapper()
 Swapper::~Swapper()
 {
     if ( new_conf and old_conf )
+    {
         // don't do this to startup configs
         InspectorManager::clear_removed_inspectors(new_conf);
 
+        //transfer ownership of mp_dbus to new config
+        if ( new_conf->mp_dbus == old_conf->mp_dbus )
+            const_cast<SnortConfig*>(old_conf)->mp_dbus = nullptr;
+    }
+
     if ( old_conf )
         delete old_conf;
 }