From 12f965bf98a0c89b67d132c2a5ec196378c49893 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Mon, 29 Apr 2024 16:21:56 +0100 Subject: [PATCH] [Fix] Allow to set 0 as number of rows to disable roll history Issue: #4947 Closes: #4947 --- src/controller.c | 4 ++-- src/libserver/protocol.c | 4 +++- src/rspamd.c | 7 ++++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/controller.c b/src/controller.c index b287f89d83..063c1c1631 100644 --- a/src/controller.c +++ b/src/controller.c @@ -1682,7 +1682,7 @@ rspamd_controller_handle_history(struct rspamd_http_connection_entry *conn_ent, L = ctx->cfg->lua_state; - if (!ctx->srv->history->disabled) { + if (ctx->srv->history && !ctx->srv->history->disabled) { rspamd_controller_handle_legacy_history(session, ctx, conn_ent, msg); } else { @@ -1765,7 +1765,7 @@ rspamd_controller_handle_history_reset(struct rspamd_http_connection_entry *conn return 0; } - if (!ctx->srv->history->disabled) { + if (ctx->srv->history && !ctx->srv->history->disabled) { /* Clean from start to the current row */ completed_rows = g_atomic_int_get(&ctx->srv->history->cur_row); diff --git a/src/libserver/protocol.c b/src/libserver/protocol.c index 5de980352b..c8c7bc76ae 100644 --- a/src/libserver/protocol.c +++ b/src/libserver/protocol.c @@ -1666,7 +1666,9 @@ void rspamd_protocol_http_reply(struct rspamd_http_message *msg, } if (!(task->flags & RSPAMD_TASK_FLAG_NO_LOG)) { - rspamd_roll_history_update(task->worker->srv->history, task); + if (task->worker->srv->history) { + rspamd_roll_history_update(task->worker->srv->history, task); + } } else { msg_debug_protocol("skip history update due to no log flag"); diff --git a/src/rspamd.c b/src/rspamd.c index 8d4c83a284..dc5535f0ce 100644 --- a/src/rspamd.c +++ b/src/rspamd.c @@ -1532,7 +1532,8 @@ int main(int argc, char **argv, char **env) /* Create rolling history */ rspamd_main->history = rspamd_roll_history_new(rspamd_main->server_pool, - rspamd_main->cfg->history_rows, rspamd_main->cfg); + rspamd_main->cfg->history_rows, + rspamd_main->cfg); msg_info_main("rspamd " RVERSION " is starting, build id: " RID); @@ -1609,7 +1610,7 @@ int main(int argc, char **argv, char **env) } /* Maybe read roll history */ - if (rspamd_main->cfg->history_file) { + if (rspamd_main->history && rspamd_main->cfg->history_file) { rspamd_roll_history_load(rspamd_main->history, rspamd_main->cfg->history_file); } @@ -1692,7 +1693,7 @@ int main(int argc, char **argv, char **env) ev_loop(event_loop, 0); /* Maybe save roll history */ - if (rspamd_main->cfg->history_file) { + if (rspamd_main->history && rspamd_main->cfg->history_file) { rspamd_roll_history_save(rspamd_main->history, rspamd_main->cfg->history_file); } -- 2.47.3