From 64330498f842386cc1f1cdec0409959b5565496f Mon Sep 17 00:00:00 2001 From: Jason Ish Date: Thu, 25 Mar 2021 12:11:01 -0600 Subject: [PATCH] eve/mqtt: fix mqtt logging with threaded eve Mqtt was not setting up a per-thread file context for logging in threaded mode, leading a crash when used in threaded mode. Redmine issue: https://redmine.openinfosecfoundation.org/issues/4404 --- src/output-json-mqtt.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/output-json-mqtt.c b/src/output-json-mqtt.c index 8a19a436f4..811024960f 100644 --- a/src/output-json-mqtt.c +++ b/src/output-json-mqtt.c @@ -58,6 +58,7 @@ typedef struct LogMQTTLogThread_ { LogMQTTFileCtx *mqttlog_ctx; uint32_t count; MemBuffer *buffer; + LogFileCtx *file_ctx; } LogMQTTLogThread; bool JsonMQTTAddMetadata(const Flow *f, uint64_t tx_id, JsonBuilder *js) @@ -94,7 +95,7 @@ static int JsonMQTTLogger(ThreadVars *tv, void *thread_data, goto error; MemBufferReset(thread->buffer); - OutputJsonBuilderBuffer(js, thread->mqttlog_ctx->file_ctx, &thread->buffer); + OutputJsonBuilderBuffer(js, thread->file_ctx, &thread->buffer); jb_free(js); return TM_ECODE_OK; @@ -174,6 +175,8 @@ static TmEcode JsonMQTTLogThreadInit(ThreadVars *t, const void *initdata, void * } thread->mqttlog_ctx = ((OutputCtx *)initdata)->data; + thread->file_ctx = LogFileEnsureExists(thread->mqttlog_ctx->file_ctx, t->id); + *data = (void *)thread; return TM_ECODE_OK;