aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-10-18 11:12:26 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-10-18 11:12:26 +0100
commit9b575a25a25d5f2956ec4bf8e37080b17c65cafd (patch)
tree6214f977218f928bc68e362a3d751c9c2f9cb50a /src
parent8b5047b8d3b870bfdff476efd53e0397272bdee8 (diff)
downloadrspamd-9b575a25a25d5f2956ec4bf8e37080b17c65cafd.tar.gz
rspamd-9b575a25a25d5f2956ec4bf8e37080b17c65cafd.zip
Use stdio buffering to save symbols cache.
Diffstat (limited to 'src')
-rw-r--r--src/libserver/symbols_cache.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libserver/symbols_cache.c b/src/libserver/symbols_cache.c
index 927e84cd5..df1c316a4 100644
--- a/src/libserver/symbols_cache.c
+++ b/src/libserver/symbols_cache.c
@@ -463,6 +463,7 @@ rspamd_symbols_cache_save_items (struct symbols_cache *cache, const gchar *name)
struct ucl_emitter_functions *efunc;
gpointer k, v;
gint fd;
+ FILE *f;
bool ret;
fd = open (name, O_CREAT | O_TRUNC | O_WRONLY, 00644);
@@ -503,10 +504,13 @@ rspamd_symbols_cache_save_items (struct symbols_cache *cache, const gchar *name)
ucl_object_insert_key (top, elt, k, 0, false);
}
- efunc = ucl_object_emit_fd_funcs (fd);
+ f = fdopen (fd, "a");
+ g_assert (f != NULL);
+
+ efunc = ucl_object_emit_file_funcs (f);
ret = ucl_object_emit_full (top, UCL_EMIT_JSON_COMPACT, efunc);
ucl_object_emit_funcs_free (efunc);
- close (fd);
+ fclose (f);
return ret;
}