From: Jason Ish Date: Thu, 25 Mar 2021 18:11:01 +0000 (-0600) Subject: eve/mqtt: fix mqtt logging with threaded eve X-Git-Tag: suricata-6.0.3~74 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c23ea17d6b75971828e83080b64e2a10bfeee1fa;p=thirdparty%2Fsuricata.git 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 (cherry picked from commit 64330498f842386cc1f1cdec0409959b5565496f) --- 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;