const ev_tstamp save_stats_interval = 60; /* 1 minute */
gpointer m;
+ g_assert (rspamd_worker_check_context (worker->ctx, rspamd_controller_ctx_magic));
ctx->event_loop = rspamd_prepare_worker (worker,
"controller",
rspamd_controller_accept_socket);
struct rspamd_srv_command srv_cmd;
struct rspamd_config *cfg = worker->srv->cfg;
+ g_assert (rspamd_worker_check_context (worker->ctx, rspamd_fuzzy_storage_magic));
ctx->event_loop = rspamd_prepare_worker (worker,
"fuzzy",
NULL);
struct hs_helper_ctx *ctx = worker->ctx;
double tim;
+ g_assert (rspamd_worker_check_context (worker->ctx, rspamd_hs_helper_magic));
ctx->cfg = worker->srv->cfg;
if (ctx->hs_dir == NULL) {
return TRUE;
}
+
+gboolean
+rspamd_worker_check_context (gpointer ctx, guint64 magic)
+{
+ struct rspamd_abstract_worker_ctx *actx = (struct rspamd_abstract_worker_ctx*)ctx;
+
+ return actx->magic == magic;
+}
#endif
\ No newline at end of file
rspamd_prepare_worker (struct rspamd_worker *worker, const char *name,
rspamd_accept_handler hdl);
+/**
+ * Should be used to validate context for a worker as in assert like invocation
+ * @param ctx
+ * @param magic
+ * @return
+ */
+gboolean rspamd_worker_check_context (gpointer ctx, guint64 magic);
+
/**
* Set special signal handler for a worker
*/
{
struct rspamd_proxy_ctx *ctx = worker->ctx;
+ g_assert (rspamd_worker_check_context (worker->ctx, rspamd_rspamd_proxy_magic));
ctx->cfg = worker->srv->cfg;
ctx->event_loop = rspamd_prepare_worker (worker, "rspamd_proxy",
proxy_accept_socket);
GQuark type;
type = g_quark_try_string ("normal");
-
ctx = rspamd_mempool_alloc0 (cfg->cfg_pool,
sizeof (struct rspamd_worker_ctx));
{
struct rspamd_worker_ctx *ctx = worker->ctx;
+ g_assert (rspamd_worker_check_context (worker->ctx, rspamd_worker_magic));
ctx->cfg = worker->srv->cfg;
ctx->event_loop = rspamd_prepare_worker (worker, "normal", accept_socket);
rspamd_symcache_start_refresh (worker->srv->cfg->cache, ctx->event_loop,