diff options
-rw-r--r-- | conf/options.inc | 1 | ||||
-rw-r--r-- | src/libserver/cfg_file.h | 1 | ||||
-rw-r--r-- | src/libserver/cfg_rcl.c | 6 | ||||
-rw-r--r-- | src/libserver/cfg_utils.c | 1 | ||||
-rw-r--r-- | src/libserver/url.c | 4 |
5 files changed, 11 insertions, 2 deletions
diff --git a/conf/options.inc b/conf/options.inc index 78fd3bee6..92d6ad7d7 100644 --- a/conf/options.inc +++ b/conf/options.inc @@ -28,6 +28,7 @@ check_all_filters = false; # Default settings dns_max_requests = 64; max_lua_urls = 1024; +max_urls = 10240; dns { timeout = 1s; diff --git a/src/libserver/cfg_file.h b/src/libserver/cfg_file.h index de6f37766..a6d37de00 100644 --- a/src/libserver/cfg_file.h +++ b/src/libserver/cfg_file.h @@ -469,6 +469,7 @@ struct rspamd_config { guint lua_gc_pause; /**< lua gc pause */ guint full_gc_iters; /**< iterations between full gc cycle */ guint max_lua_urls; /**< maximum number of urls to be passed to Lua */ + guint max_urls; /**< maximum number of urls to be processed in general */ guint max_blas_threads; /**< maximum threads for openblas when learning ANN */ guint max_opts_len; /**< maximum length for all options for a symbol */ diff --git a/src/libserver/cfg_rcl.c b/src/libserver/cfg_rcl.c index 817f7efc5..ebca34563 100644 --- a/src/libserver/cfg_rcl.c +++ b/src/libserver/cfg_rcl.c @@ -2223,6 +2223,12 @@ rspamd_rcl_config_init (struct rspamd_config *cfg, GHashTable *skip_sections) RSPAMD_CL_FLAG_INT_32, "Maximum count of URLs to pass to Lua to avoid DoS (default: 1024)"); rspamd_rcl_add_default_handler (sub, + "max_urls", + rspamd_rcl_parse_struct_integer, + G_STRUCT_OFFSET (struct rspamd_config, max_urls), + RSPAMD_CL_FLAG_INT_32, + "Maximum count of URLs to process to avoid DoS (default: 10240)"); + rspamd_rcl_add_default_handler (sub, "max_blas_threads", rspamd_rcl_parse_struct_integer, G_STRUCT_OFFSET (struct rspamd_config, max_blas_threads), diff --git a/src/libserver/cfg_utils.c b/src/libserver/cfg_utils.c index 37a3d4578..cd85b73ac 100644 --- a/src/libserver/cfg_utils.c +++ b/src/libserver/cfg_utils.c @@ -196,6 +196,7 @@ rspamd_config_new (enum rspamd_config_init_flags flags) cfg->log_error_elt_maxlen = 1000; cfg->cache_reload_time = 30.0; cfg->max_lua_urls = 1024; + cfg->max_urls = cfg->max_lua_urls * 10; cfg->max_blas_threads = 1; cfg->max_opts_len = 4096; diff --git a/src/libserver/url.c b/src/libserver/url.c index de895299b..52af7ca27 100644 --- a/src/libserver/url.c +++ b/src/libserver/url.c @@ -3108,8 +3108,8 @@ rspamd_url_text_part_callback (struct rspamd_url *url, gsize start_offset, if (target_tbl) { /* Also check max urls */ - if (cbd->task->cfg && cbd->task->cfg->max_lua_urls > 0) { - if (g_hash_table_size (target_tbl) > cbd->task->cfg->max_lua_urls) { + if (cbd->task->cfg && cbd->task->cfg->max_urls > 0) { + if (g_hash_table_size (target_tbl) > cbd->task->cfg->max_urls) { msg_err_task ("part has too many URLs, we cannot process more: " "%d urls extracted ", (guint)g_hash_table_size (target_tbl)); |