diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-01-22 16:24:04 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-01-22 16:24:04 +0000 |
commit | 75792ed8c8fed656a38df6447e91f5591f1d2cea (patch) | |
tree | 80a16bbe75e5c5121c6f592cab6b452cade1f4f7 /src/libstat | |
parent | fb94e7098a57394ed4242428248dff87e190619b (diff) | |
download | rspamd-75792ed8c8fed656a38df6447e91f5591f1d2cea.tar.gz rspamd-75792ed8c8fed656a38df6447e91f5591f1d2cea.zip |
Don't crash if learn cache failed to initialize
Diffstat (limited to 'src/libstat')
-rw-r--r-- | src/libstat/stat_config.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/libstat/stat_config.c b/src/libstat/stat_config.c index 538ddf8cf..c8b7bcebc 100644 --- a/src/libstat/stat_config.c +++ b/src/libstat/stat_config.c @@ -196,8 +196,16 @@ rspamd_stat_init (struct rspamd_config *cfg, struct event_base *ev_base) cl->cache = rspamd_stat_get_cache (cache_name); g_assert (cl->cache != NULL); cl->cachecf = cl->cache->init (stat_ctx, cfg, st, cache_obj); - msg_debug_config ("added cache %s for symbol %s", - cl->cache->name, stf->symbol); + + if (cl->cachecf == NULL) { + msg_err_config ("error adding cache %s for symbol %s", + cl->cache->name, stf->symbol); + cl->cache = NULL; + } + else { + msg_debug_config ("added cache %s for symbol %s", + cl->cache->name, stf->symbol); + } } if (st->bkcf == NULL) { @@ -246,7 +254,10 @@ rspamd_stat_close (void) g_slice_free1 (sizeof (*st), st); } - cl->cache->close (cl->cachecf); + if (cl->cache && cl->cachecf) { + cl->cache->close (cl->cachecf); + } + g_array_free (cl->statfiles_ids, TRUE); g_slice_free1 (sizeof (*cl), cl); } |