From: Vsevolod Stakhov Date: Sat, 18 Jun 2022 13:50:43 +0000 (+0100) Subject: [Project] Http_stat: Notice statfiles when creating runtime X-Git-Tag: 3.3~189 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=7b97551741638838332ab7566d932200830f018d;p=rspamd.git [Project] Http_stat: Notice statfiles when creating runtime --- diff --git a/src/libstat/backends/http_backend.cxx b/src/libstat/backends/http_backend.cxx index 51ac6e0d8..eaf2b1804 100644 --- a/src/libstat/backends/http_backend.cxx +++ b/src/libstat/backends/http_backend.cxx @@ -80,9 +80,13 @@ private: class http_backend_runtime final { public: static auto create(struct rspamd_task *task, bool is_learn) -> http_backend_runtime *; + /* Add a new statfile with a specific id to the list of statfiles */ + auto notice_statfile(int id, const struct rspamd_statfile_config *st) -> void { + seen_statfiles[id] = st; + } private: http_backends_collection *all_backends; - robin_hood::unordered_flat_map seen_statfiles; + robin_hood::unordered_flat_map seen_statfiles; struct upstream *selected; private: http_backend_runtime(struct rspamd_task *task, bool is_learn) : @@ -249,17 +253,21 @@ rspamd_http_runtime(struct rspamd_task* task, struct rspamd_statfile_config* stcf, gboolean learn, gpointer ctx, - gint _id) + gint id) { auto maybe_existing = rspamd_mempool_get_variable(task->task_pool, RSPAMD_MEMPOOL_HTTP_STAT_BACKEND_RUNTIME); if (maybe_existing != nullptr) { + auto real_runtime = (rspamd::stat::http::http_backend_runtime *)maybe_existing; + real_runtime->notice_statfile(id, stcf); + return maybe_existing; } auto runtime = rspamd::stat::http::http_backend_runtime::create(task, learn); if (runtime) { + runtime->notice_statfile(id, stcf); rspamd_mempool_set_variable(task->task_pool, RSPAMD_MEMPOOL_HTTP_STAT_BACKEND_RUNTIME, (void *)runtime, nullptr); }