gint
chartable_module_init (struct rspamd_config *cfg, struct module_ctx **ctx)
{
- chartable_module_ctx = g_malloc (sizeof (struct chartable_ctx));
+ if (chartable_module_ctx == NULL) {
+ chartable_module_ctx = g_malloc (sizeof (struct chartable_ctx));
- chartable_module_ctx->chartable_pool = rspamd_mempool_new (rspamd_mempool_suggest_size (), NULL);
- chartable_module_ctx->max_word_len = 10;
+ chartable_module_ctx->chartable_pool = rspamd_mempool_new (rspamd_mempool_suggest_size (), NULL);
+ chartable_module_ctx->max_word_len = 10;
+ }
*ctx = (struct module_ctx *)chartable_module_ctx;
gint
dkim_module_init (struct rspamd_config *cfg, struct module_ctx **ctx)
{
- dkim_module_ctx = g_malloc0 (sizeof (struct dkim_ctx));
-
- dkim_module_ctx->dkim_pool = rspamd_mempool_new (rspamd_mempool_suggest_size (), "dkim");
- dkim_module_ctx->sign_headers = "from:sender:reply-to:subject:date:message-id:"
- "to:cc:mime-version:content-type:content-transfer-encoding:"
- "resent-to:resent-cc:resent-from:resent-sender:resent-message-id:"
- "in-reply-to:references:list-id:list-owner:list-unsubscribe:"
- "list-subscribe:list-post";
- dkim_module_ctx->sign_condition_ref = -1;
- dkim_module_ctx->max_sigs = DEFAULT_MAX_SIGS;
+ if (dkim_module_ctx == NULL) {
+ dkim_module_ctx = g_malloc0 (sizeof (struct dkim_ctx));
+
+ dkim_module_ctx->dkim_pool = rspamd_mempool_new (rspamd_mempool_suggest_size (), "dkim");
+ dkim_module_ctx->sign_headers = "from:sender:reply-to:subject:date:message-id:"
+ "to:cc:mime-version:content-type:content-transfer-encoding:"
+ "resent-to:resent-cc:resent-from:resent-sender:resent-message-id:"
+ "in-reply-to:references:list-id:list-owner:list-unsubscribe:"
+ "list-subscribe:list-post";
+ dkim_module_ctx->sign_condition_ref = -1;
+ dkim_module_ctx->max_sigs = DEFAULT_MAX_SIGS;
+ }
*ctx = (struct module_ctx *)dkim_module_ctx;
{
lua_State *L = cfg->lua_state;
- fuzzy_module_ctx = g_malloc0 (sizeof (struct fuzzy_ctx));
+ if (fuzzy_module_ctx == NULL) {
+ fuzzy_module_ctx = g_malloc0 (sizeof (struct fuzzy_ctx));
+
+ fuzzy_module_ctx->fuzzy_pool = rspamd_mempool_new (rspamd_mempool_suggest_size (), NULL);
+ /* TODO: this should match rules count actually */
+ fuzzy_module_ctx->keypairs_cache = rspamd_keypair_cache_new (32);
+ fuzzy_module_ctx->fuzzy_rules = g_ptr_array_new ();
+ }
- fuzzy_module_ctx->fuzzy_pool = rspamd_mempool_new (rspamd_mempool_suggest_size (), NULL);
fuzzy_module_ctx->cfg = cfg;
- /* TODO: this should match rules count actually */
- fuzzy_module_ctx->keypairs_cache = rspamd_keypair_cache_new (32);
- fuzzy_module_ctx->fuzzy_rules = g_ptr_array_new ();
*ctx = (struct module_ctx *)fuzzy_module_ctx;
saved_ctx = fuzzy_module_ctx->ctx;
rspamd_mempool_delete (fuzzy_module_ctx->fuzzy_pool);
rspamd_keypair_cache_destroy (fuzzy_module_ctx->keypairs_cache);
+ g_ptr_array_free (fuzzy_module_ctx->fuzzy_rules, TRUE);
memset (fuzzy_module_ctx, 0, sizeof (*fuzzy_module_ctx));
fuzzy_module_ctx->ctx = saved_ctx;
fuzzy_module_ctx->fuzzy_pool = rspamd_mempool_new (rspamd_mempool_suggest_size (), NULL);
fuzzy_module_ctx->cfg = cfg;
+ fuzzy_module_ctx->fuzzy_rules = g_ptr_array_new ();
fuzzy_module_ctx->keypairs_cache = rspamd_keypair_cache_new (32);
return fuzzy_check_module_config (cfg);
gint
regexp_module_init (struct rspamd_config *cfg, struct module_ctx **ctx)
{
- regexp_module_ctx = g_malloc (sizeof (struct regexp_ctx));
-
- regexp_module_ctx->regexp_pool = rspamd_mempool_new (rspamd_mempool_suggest_size (), NULL);
+ if (regexp_module_ctx == NULL) {
+ regexp_module_ctx = g_malloc (sizeof (struct regexp_ctx));
+ regexp_module_ctx->regexp_pool = rspamd_mempool_new (rspamd_mempool_suggest_size (), NULL);
+ }
*ctx = (struct module_ctx *)regexp_module_ctx;
gint
spf_module_init (struct rspamd_config *cfg, struct module_ctx **ctx)
{
- spf_module_ctx = g_malloc (sizeof (struct spf_ctx));
+ if (spf_module_ctx == NULL) {
+ spf_module_ctx = g_malloc (sizeof (struct spf_ctx));
- spf_module_ctx->spf_pool = rspamd_mempool_new (rspamd_mempool_suggest_size (), NULL);
+ spf_module_ctx->spf_pool = rspamd_mempool_new (rspamd_mempool_suggest_size (), NULL);
+ }
*ctx = (struct module_ctx *)spf_module_ctx;