output api: complete shutdown functions

Add missing function for Filedata API. Clean up list in all functions.
pull/926/head
Victor Julien 11 years ago
parent b2d29a85e9
commit c27304451e

@ -241,8 +241,10 @@ static TmEcode OutputFileLogThreadDeinit(ThreadVars *tv, void *thread_data) {
tm_module->ThreadDeinit(tv, store->thread_data); tm_module->ThreadDeinit(tv, store->thread_data);
} }
OutputLoggerThreadStore *next_store = store->next;
SCFree(store);
store = next_store;
logger = logger->next; logger = logger->next;
store = store->next;
} }
return TM_ECODE_OK; return TM_ECODE_OK;
} }
@ -282,8 +284,10 @@ void OutputFileShutdown(void)
{ {
OutputFileLogger *logger = list; OutputFileLogger *logger = list;
while (logger) { while (logger) {
if (logger->output_ctx != NULL && logger->output_ctx->DeInit != NULL) OutputFileLogger *next_logger = logger->next;
logger->output_ctx->DeInit(logger->output_ctx); SCFree(logger);
logger = logger->next; logger = next_logger;
} }
list = NULL;
} }

@ -396,8 +396,10 @@ static TmEcode OutputFiledataLogThreadDeinit(ThreadVars *tv, void *thread_data)
tm_module->ThreadDeinit(tv, store->thread_data); tm_module->ThreadDeinit(tv, store->thread_data);
} }
OutputLoggerThreadStore *next_store = store->next;
SCFree(store);
store = next_store;
logger = logger->next; logger = logger->next;
store = store->next;
} }
SCMutexLock(&g_waldo_mutex); SCMutexLock(&g_waldo_mutex);
@ -444,3 +446,15 @@ void TmModuleFiledataLoggerRegister (void) {
SC_ATOMIC_INIT(file_id); SC_ATOMIC_INIT(file_id);
} }
void OutputFiledataShutdown(void)
{
OutputFiledataLogger *logger = list;
while (logger) {
OutputFiledataLogger *next_logger = logger->next;
SCFree(logger);
logger = next_logger;
}
list = NULL;
}

@ -45,4 +45,6 @@ int OutputRegisterFiledataLogger(const char *name, FiledataLogger LogFunc, Outpu
void TmModuleFiledataLoggerRegister (void); void TmModuleFiledataLoggerRegister (void);
void OutputFiledataShutdown(void);
#endif /* __OUTPUT_FILE_H__ */ #endif /* __OUTPUT_FILE_H__ */

@ -181,8 +181,11 @@ static TmEcode OutputPacketLogThreadDeinit(ThreadVars *tv, void *thread_data) {
tm_module->ThreadDeinit(tv, store->thread_data); tm_module->ThreadDeinit(tv, store->thread_data);
} }
OutputLoggerThreadStore *next_store = store->next;
SCFree(store);
store = next_store;
logger = logger->next; logger = logger->next;
store = store->next;
} }
return TM_ECODE_OK; return TM_ECODE_OK;
} }
@ -222,11 +225,11 @@ void OutputPacketShutdown(void)
{ {
OutputPacketLogger *logger = list; OutputPacketLogger *logger = list;
while (logger) { while (logger) {
if (logger->output_ctx != NULL && logger->output_ctx->DeInit != NULL) OutputPacketLogger *next_logger = logger->next;
logger->output_ctx->DeInit(logger->output_ctx); SCFree(logger);
logger = logger->next; logger = next_logger;
} }
/* FIXME */ /* reset list pointer */
list = NULL; list = NULL;
} }

@ -248,8 +248,10 @@ static TmEcode OutputTxLogThreadDeinit(ThreadVars *tv, void *thread_data) {
tm_module->ThreadDeinit(tv, store->thread_data); tm_module->ThreadDeinit(tv, store->thread_data);
} }
OutputLoggerThreadStore *next_store = store->next;
SCFree(store);
store = next_store;
logger = logger->next; logger = logger->next;
store = store->next;
} }
return TM_ECODE_OK; return TM_ECODE_OK;
} }
@ -289,8 +291,9 @@ void OutputTxShutdown(void)
{ {
OutputTxLogger *logger = list; OutputTxLogger *logger = list;
while (logger) { while (logger) {
if (logger->output_ctx != NULL && logger->output_ctx->DeInit != NULL) OutputTxLogger *next_logger = logger->next;
logger->output_ctx->DeInit(logger->output_ctx); SCFree(logger);
logger = logger->next; logger = next_logger;
} }
list = NULL;
} }

Loading…
Cancel
Save