With the change to the hash table for tracking threaded loggers, this
call is now called once per thread, so should be changed to the
ThreadDeinit, as that is not longer being called.
Then call Deinit for the primary logger. In threaded mode this would be
the parent, its just the logger in non-threaded mode.
Bug: #6438
SCReturnInt(0);
}
- if (lf_ctx->type == LOGFILE_TYPE_PLUGIN) {
- lf_ctx->plugin.plugin->Deinit(lf_ctx->plugin.init_data);
+ if (lf_ctx->type == LOGFILE_TYPE_PLUGIN && lf_ctx->parent != NULL) {
+ lf_ctx->plugin.plugin->ThreadDeinit(lf_ctx->plugin.init_data, lf_ctx->plugin.thread_data);
}
if (lf_ctx->threaded) {
OutputUnregisterFileRotationFlag(&lf_ctx->rotation_flag);
}
+ /* Deinitialize output plugins. We only want to call this for the
+ * parent of threaded output, or always for non-threaded
+ * output. */
+ if (lf_ctx->type == LOGFILE_TYPE_PLUGIN && lf_ctx->parent == NULL) {
+ lf_ctx->plugin.plugin->Deinit(lf_ctx->plugin.init_data);
+ }
+
memset(lf_ctx, 0, sizeof(*lf_ctx));
SCFree(lf_ctx);