aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--conf/options.inc1
-rw-r--r--doc/markdown/configuration/options.md1
-rw-r--r--src/libserver/cfg_file.h1
-rw-r--r--src/libserver/cfg_rcl.c5
-rw-r--r--src/libserver/cfg_utils.c1
-rw-r--r--src/rspamd.c6
6 files changed, 13 insertions, 2 deletions
diff --git a/conf/options.inc b/conf/options.inc
index fe8f56f89..186afbade 100644
--- a/conf/options.inc
+++ b/conf/options.inc
@@ -23,3 +23,4 @@ classify_headers = [
];
control_socket = "$DBDIR/rspamd.sock mode=0600";
+history_rows = 200;
diff --git a/doc/markdown/configuration/options.md b/doc/markdown/configuration/options.md
index 730a7996b..b503b98f3 100644
--- a/doc/markdown/configuration/options.md
+++ b/doc/markdown/configuration/options.md
@@ -48,6 +48,7 @@ symbol).
* `min_word_len`: minimum size in letters (valid for utf8 texts as well) for a sequence of characters to be treated as a word; normally rspamd skips sequences if they are shorter or equal to three symbols.
* `control_socket`: path/bind credits for the control socket
* `classify_headers`: list of headers that are processed by statistics
+* `history_rows`: number of rows in the recent history roll table
## DNS options
diff --git a/src/libserver/cfg_file.h b/src/libserver/cfg_file.h
index 44b91505d..1fc5aee28 100644
--- a/src/libserver/cfg_file.h
+++ b/src/libserver/cfg_file.h
@@ -271,6 +271,7 @@ struct rspamd_config {
gdouble upstream_revive_time; /**< revive timeout for upstreams */
guint32 min_word_len; /**< minimum length of the word to be considered */
+ guint history_rows; /**< number of history rows stored */
GList *classify_headers; /**< list of headers using for statistics */
struct module_s **compiled_modules; /**< list of compiled C modules */
diff --git a/src/libserver/cfg_rcl.c b/src/libserver/cfg_rcl.c
index 596fff74a..7180d8d70 100644
--- a/src/libserver/cfg_rcl.c
+++ b/src/libserver/cfg_rcl.c
@@ -1447,6 +1447,11 @@ rspamd_rcl_config_init (void)
rspamd_rcl_parse_struct_string,
G_STRUCT_OFFSET (struct rspamd_config, tld_file),
RSPAMD_CL_FLAG_STRING_PATH);
+ rspamd_rcl_add_default_handler (sub,
+ "history_rows",
+ rspamd_rcl_parse_struct_integer,
+ G_STRUCT_OFFSET (struct rspamd_config, history_rows),
+ RSPAMD_CL_FLAG_UINT);
/**
* Metric section
diff --git a/src/libserver/cfg_utils.c b/src/libserver/cfg_utils.c
index 5e3bf1561..3af15ab1d 100644
--- a/src/libserver/cfg_utils.c
+++ b/src/libserver/cfg_utils.c
@@ -175,6 +175,7 @@ rspamd_config_defaults (struct rspamd_config *cfg)
cfg->min_word_len = DEFAULT_MIN_WORD;
cfg->dns_max_requests = 64;
+ cfg->history_rows = 200;
}
void
diff --git a/src/rspamd.c b/src/rspamd.c
index 3609a3c5c..31d6dad78 100644
--- a/src/rspamd.c
+++ b/src/rspamd.c
@@ -816,8 +816,6 @@ main (gint argc, gchar **argv, gchar **env)
"main");
rspamd_main->stat = rspamd_mempool_alloc0_shared (rspamd_main->server_pool,
sizeof (struct rspamd_stat));
- /* Create rolling history */
- rspamd_main->history = rspamd_roll_history_new (rspamd_main->server_pool);
rspamd_main->cfg =
(struct rspamd_config *) g_malloc0 (sizeof (struct rspamd_config));
@@ -950,6 +948,10 @@ main (gint argc, gchar **argv, gchar **env)
rspamd_main->cfg->log_level = G_LOG_LEVEL_DEBUG;
}
+ /* Create rolling history */
+ rspamd_main->history = rspamd_roll_history_new (rspamd_main->server_pool,
+ rspamd_main->cfg->history_rows);
+
gperf_profiler_init (rspamd_main->cfg, "main");
msg_info_main ("rspamd "