]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
stats api: call thread deinit API functions 1329/head
authorVictor Julien <victor@inliniac.net>
Thu, 5 Feb 2015 08:36:34 +0000 (09:36 +0100)
committerVictor Julien <victor@inliniac.net>
Tue, 10 Feb 2015 14:16:35 +0000 (15:16 +0100)
Thread deinit funcs weren't called. This meant the lua scripts 'deinit'
functions weren't called either.

src/counters.c
src/util-error.c
src/util-error.h

index 01e80b4e17bdc431d5e735bb2103cc8d94a5e332..197fe79ec6d80ea4d8c69dadcd8e7ce1a880422d 100644 (file)
@@ -320,6 +320,12 @@ static void *SCPerfMgmtThread(void *arg)
     TmThreadsSetFlag(tv_local, THV_RUNNING_DONE);
     TmThreadWaitForFlag(tv_local, THV_DEINIT);
 
+    r = tm->ThreadDeinit(tv_local, stats_thread_data);
+    if (r != TM_ECODE_OK) {
+        SCLogError(SC_ERR_THREAD_DEINIT, "Perf Counter API "
+                   "ThreadDeinit failed");
+    }
+
     TmThreadsSetFlag(tv_local, THV_CLOSED);
     return NULL;
 }
index 4ae917191eb0be25cf0950e87e7ca2acba27c5de..d352a07e5caf14db69a5ed29d900d45216c87f3b 100644 (file)
@@ -114,6 +114,7 @@ const char * SCErrorToString(SCError err)
         CASE_CODE (SC_ERR_THREAD_SPAWN);
         CASE_CODE (SC_ERR_THREAD_CREATE);
         CASE_CODE (SC_ERR_THREAD_INIT);
+        CASE_CODE (SC_ERR_THREAD_DEINIT);
         CASE_CODE (SC_ERR_THRESHOLD_HASH_ADD);
         CASE_CODE (SC_ERR_UNDEFINED_VAR);
         CASE_CODE (SC_ERR_RULE_KEYWORD_UNKNOWN);
index 9e9008a66c497fa98933e8ef1e97ba923afa6d10..019d0179e56f7dd5c36abdf29c57ddcffa993225 100644 (file)
@@ -294,6 +294,7 @@ typedef enum {
     SC_ERR_NO_NETMAP,
     SC_ERR_NETMAP_CREATE,
     SC_ERR_NETMAP_READ,
+    SC_ERR_THREAD_DEINIT, /**< thread's deinit function failed */
 } SCError;
 
 const char *SCErrorToString(SCError);