aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstat
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2016-01-22 16:24:04 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2016-01-22 16:24:04 +0000
commit75792ed8c8fed656a38df6447e91f5591f1d2cea (patch)
tree80a16bbe75e5c5121c6f592cab6b452cade1f4f7 /src/libstat
parentfb94e7098a57394ed4242428248dff87e190619b (diff)
downloadrspamd-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.c17
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);
}