]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
unix socket: support profiling
authorVictor Julien <victor@inliniac.net>
Tue, 6 Jan 2015 12:11:38 +0000 (13:11 +0100)
committerVictor Julien <victor@inliniac.net>
Wed, 7 Jan 2015 08:51:36 +0000 (09:51 +0100)
src/runmode-unix-socket.c
src/suricata.c
src/util-profiling.c

index 54c85fe739c7f3335a384d292aa29682660cd1a2..bff022d6eb225af7869cfced2ed91d668a86065c 100644 (file)
@@ -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);
index 54ec61ec4a4b2a066ae486cfaf1d1c1acd397771..14bd1a6c93e659393c1e5b21ba7177cd44b59655 100644 (file)
@@ -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
index 4cdfdb57a7e64df6236f5d5917350848bc806bac..7a1ce29099315d173d02ea058bfda7fac086de6d 100644 (file)
@@ -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();