From: Victor Julien Date: Thu, 1 May 2014 10:50:02 +0000 (+0200) Subject: flow recycler: unix socket support X-Git-Tag: suricata-2.1beta1~69 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a52a4ae9d480a504dd1373e96f0fa1cc41ad3fb2;p=thirdparty%2Fsuricata.git flow recycler: unix socket support Support starting and shutting down the flow recycler thread in the unix socket runmode. --- diff --git a/src/runmode-unix-socket.c b/src/runmode-unix-socket.c index 03d7790315..ec53b3f6ff 100644 --- a/src/runmode-unix-socket.c +++ b/src/runmode-unix-socket.c @@ -286,15 +286,24 @@ TmEcode UnixSocketPcapFilesCheck(void *data) SCFree(this->currentfile); } this->currentfile = NULL; - TmThreadKillThreadsFamily(TVT_MGMT); - TmThreadClearThreadsFamily(TVT_MGMT); + + /* handle graceful shutdown of the flow engine, it's helper + * threads and the packet threads */ + FlowKillFlowManagerThread(); TmThreadDisableThreadsWithTMS(TM_FLAG_RECEIVE_TM | TM_FLAG_DECODE_TM); FlowForceReassembly(); TmThreadKillThreadsFamily(TVT_PPT); TmThreadClearThreadsFamily(TVT_PPT); + FlowKillFlowRecyclerThread(); RunModeShutDown(); + + /* kill remaining mgt threads */ + TmThreadKillThreadsFamily(TVT_MGMT); + TmThreadClearThreadsFamily(TVT_MGMT); SCPerfReleaseResources(); - /* thread killed, we can run non thread-safe shutdown functions */ + + /* mgt and ppt threads killed, we can run non thread-safe + * shutdown functions */ FlowShutdown(); HostCleanup(); StreamTcpFreeConfig(STREAM_VERBOSE); @@ -332,6 +341,7 @@ TmEcode UnixSocketPcapFilesCheck(void *data) RunModeInitializeOutputs(); RunModeDispatch(RUNMODE_PCAP_FILE, NULL, this->de_ctx); FlowManagerThreadSpawn(); + FlowRecyclerThreadSpawn(); SCPerfSpawnThreads(); /* Un-pause all the paused threads */ TmThreadContinueThreads();