From: Oleksandr Stepanov -X (ostepano - SOFTSERVE INC at Cisco) Date: Fri, 30 May 2025 14:42:19 +0000 (+0000) Subject: Pull request #4762: mp_dbus: transfer ownership of MPDataBus to new config during... X-Git-Tag: 3.9.1.0~22 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=67a130ae84fbdd88f4dfdafa49a0ec76df48a909;p=thirdparty%2Fsnort3.git Pull request #4762: mp_dbus: transfer ownership of MPDataBus to new config during reload Merge in SNORT/snort3 from ~OSTEPANO/snort3:transport_reload to master Squashed commit of the following: commit e56c55c2eddeb7b41107f79ca5a78ce1e3c96a35 Author: Oleksandr Stepanov Date: Tue May 27 12:52:08 2025 -0400 mp_dbus: transfer ownership of MPDataBus to new config during reload --- diff --git a/src/main.cc b/src/main.cc index cdc9ae17e..4e5e0e91c 100644 --- a/src/main.cc +++ b/src/main.cc @@ -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); diff --git a/src/main/swapper.cc b/src/main/swapper.cc index f86de53f7..57631e993 100644 --- a/src/main/swapper.cc +++ b/src/main/swapper.cc @@ -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(old_conf)->mp_dbus = nullptr; + } + if ( old_conf ) delete old_conf; }