From: Victor Julien Date: Tue, 6 Jan 2015 12:11:38 +0000 (+0100) Subject: unix socket: support profiling X-Git-Tag: suricata-2.1beta3~62 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=485f34134ea1bce824a64f0759396f66a48bc7d3;p=thirdparty%2Fsuricata.git unix socket: support profiling --- diff --git a/src/runmode-unix-socket.c b/src/runmode-unix-socket.c index 54c85fe739..bff022d6eb 100644 --- a/src/runmode-unix-socket.c +++ b/src/runmode-unix-socket.c @@ -43,6 +43,8 @@ #include "host.h" #include "defrag.h" +#include "util-profiling.h" + static const char *default_mode = NULL; int unix_socket_mode_is_running = 0; @@ -312,6 +314,11 @@ TmEcode UnixSocketPcapFilesCheck(void *data) StreamTcpFreeConfig(STREAM_VERBOSE); DefragDestroy(); TmqResetQueues(); +#ifdef PROFILING + if (profiling_rules_enabled) + SCProfilingDump(); + SCProfilingDestroy(); +#endif } if (!TAILQ_EMPTY(&this->files)) { PcapFiles *cfile = TAILQ_FIRST(&this->files); @@ -337,6 +344,11 @@ TmEcode UnixSocketPcapFilesCheck(void *data) return TM_ECODE_FAILED; } PcapFilesFree(cfile); +#ifdef PROFILING + SCProfilingRulesGlobalInit(); + SCProfilingKeywordsGlobalInit(); + SCProfilingInit(); +#endif /* PROFILING */ DefragInit(); FlowInitConfig(FLOW_QUIET); StreamTcpInitConfig(STREAM_VERBOSE); diff --git a/src/suricata.c b/src/suricata.c index 54ec61ec4a..14bd1a6c93 100644 --- a/src/suricata.c +++ b/src/suricata.c @@ -2078,9 +2078,11 @@ static int PostConfLoadedSetup(SCInstance *suri) CIDRInit(); SigParsePrepare(); #ifdef PROFILING - SCProfilingRulesGlobalInit(); - SCProfilingKeywordsGlobalInit(); - SCProfilingInit(); + if (suri->run_mode != RUNMODE_UNIX_SOCKET) { + SCProfilingRulesGlobalInit(); + SCProfilingKeywordsGlobalInit(); + SCProfilingInit(); + } #endif /* PROFILING */ SCReputationInitCtx(); SCProtoNameInit(); @@ -2491,9 +2493,11 @@ int main(int argc, char **argv) #endif #ifdef PROFILING - if (profiling_rules_enabled) - SCProfilingDump(); - SCProfilingDestroy(); + if (suri.run_mode != RUNMODE_UNIX_SOCKET) { + if (profiling_rules_enabled) + SCProfilingDump(); + SCProfilingDestroy(); + } #endif #ifdef OS_WIN32 diff --git a/src/util-profiling.c b/src/util-profiling.c index 4cdfdb57a7..7a1ce29099 100644 --- a/src/util-profiling.c +++ b/src/util-profiling.c @@ -279,13 +279,16 @@ SCProfilingDestroy(void) if (profiling_packets_csv_enabled) { if (packet_profile_csv_fp != NULL) fclose(packet_profile_csv_fp); + packet_profile_csv_fp = NULL; } if (profiling_csv_file_name != NULL) SCFree(profiling_csv_file_name); + profiling_csv_file_name = NULL; if (profiling_file_name != NULL) SCFree(profiling_file_name); + profiling_file_name = NULL; #ifdef PROFILE_LOCKING LockRecordFreeHash();