output smtp: clean up memory at shutdown

pull/1195/head
Victor Julien 11 years ago
parent c712ab2299
commit d72f8c7de5

@ -61,6 +61,26 @@ static int JsonSmtpLogger(ThreadVars *tv, void *thread_data, const Packet *p)
SCReturnInt(JsonEmailLogger(tv, thread_data, p)); SCReturnInt(JsonEmailLogger(tv, thread_data, p));
} }
static void OutputSmtpLogDeInitCtx(OutputCtx *output_ctx)
{
OutputJsonEmailCtx *email_ctx = output_ctx->data;
if (email_ctx != NULL) {
LogFileFreeCtx(email_ctx->file_ctx);
SCFree(email_ctx);
}
SCFree(output_ctx);
}
static void OutputSmtpLogDeInitCtxSub(OutputCtx *output_ctx)
{
SCLogDebug("cleaning up sub output_ctx %p", output_ctx);
OutputJsonEmailCtx *email_ctx = output_ctx->data;
if (email_ctx != NULL) {
SCFree(email_ctx);
}
SCFree(output_ctx);
}
#define DEFAULT_LOG_FILENAME "smtp.json" #define DEFAULT_LOG_FILENAME "smtp.json"
OutputCtx *OutputSmtpLogInit(ConfNode *conf) OutputCtx *OutputSmtpLogInit(ConfNode *conf)
{ {
@ -91,7 +111,7 @@ OutputCtx *OutputSmtpLogInit(ConfNode *conf)
email_ctx->file_ctx = file_ctx; email_ctx->file_ctx = file_ctx;
output_ctx->data = email_ctx; output_ctx->data = email_ctx;
output_ctx->DeInit = NULL; output_ctx->DeInit = OutputSmtpLogDeInitCtx;
/* enable the logger for the app layer */ /* enable the logger for the app layer */
AppLayerParserRegisterLogger(IPPROTO_TCP, ALPROTO_SMTP); AppLayerParserRegisterLogger(IPPROTO_TCP, ALPROTO_SMTP);
@ -116,7 +136,7 @@ static OutputCtx *OutputSmtpLogInitSub(ConfNode *conf, OutputCtx *parent_ctx)
email_ctx->file_ctx = ajt->file_ctx; email_ctx->file_ctx = ajt->file_ctx;
output_ctx->data = email_ctx; output_ctx->data = email_ctx;
output_ctx->DeInit = NULL; output_ctx->DeInit = OutputSmtpLogDeInitCtxSub;
/* enable the logger for the app layer */ /* enable the logger for the app layer */
AppLayerParserRegisterLogger(IPPROTO_TCP, ALPROTO_SMTP); AppLayerParserRegisterLogger(IPPROTO_TCP, ALPROTO_SMTP);

Loading…
Cancel
Save