Skip to content

Commit

Permalink
outputs: call plugin ThreadDeinit, not Deinit
Browse files Browse the repository at this point in the history
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: OISF#6438
  • Loading branch information
jasonish committed Nov 2, 2023
1 parent 0726c1f commit 64ed743
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions src/util-logopenfile.c
Original file line number Diff line number Diff line change
Expand Up @@ -865,8 +865,8 @@ int LogFileFreeCtx(LogFileCtx *lf_ctx)
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) {
Expand Down Expand Up @@ -902,6 +902,13 @@ int LogFileFreeCtx(LogFileCtx *lf_ctx)
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);

Expand Down

0 comments on commit 64ed743

Please sign in to comment.