]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Fix reload and hyperscan ready event
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 17 Jan 2017 14:04:58 +0000 (14:04 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 17 Jan 2017 14:09:51 +0000 (14:09 +0000)
MFH: true

src/hs_helper.c
src/libserver/rspamd_control.c
src/libserver/rspamd_control.h

index e3aee6cbcd6aea54e7e43c4ee2f6044c165b74a8..088aba8ae370eecccb3fb66172189073a05d8f0f 100644 (file)
@@ -210,7 +210,8 @@ rspamd_rs_compile (struct hs_helper_ctx *ctx, struct rspamd_worker *worker,
        }
 
        srv_cmd.type = RSPAMD_SRV_HYPERSCAN_LOADED;
-       srv_cmd.cmd.hs_loaded.cache_dir = ctx->hs_dir;
+       rspamd_strlcpy (srv_cmd.cmd.hs_loaded.cache_dir, ctx->hs_dir,
+                       sizeof (srv_cmd.cmd.hs_loaded.cache_dir));
        srv_cmd.cmd.hs_loaded.forced = forced;
 
        rspamd_srv_send_command (worker, ctx->ev_base, &srv_cmd, -1, NULL, NULL);
index d680c35b1f61f13633019b732abbb720bb47ecba..592e3dbc123962ca7b2d74e3fb9e551547723364 100644 (file)
@@ -810,7 +810,9 @@ rspamd_srv_handler (gint fd, short what, gpointer ud)
                                 * We assume that cache dir is shared at the same address for all
                                 * workers
                                 */
-                               wcmd.cmd.hs_loaded.cache_dir = cmd.cmd.hs_loaded.cache_dir;
+                               rspamd_strlcpy (wcmd.cmd.hs_loaded.cache_dir,
+                                               cmd.cmd.hs_loaded.cache_dir,
+                                               sizeof (wcmd.cmd.hs_loaded.cache_dir));
                                wcmd.cmd.hs_loaded.forced = cmd.cmd.hs_loaded.forced;
                                rspamd_control_broadcast_cmd (srv, &wcmd, rfd,
                                                rspamd_control_hs_io_handler, NULL);
index fd24b856befa0108a7d0c9fbc80af01278808ae9..c7a60ef58375320555393abea7303e1009ddc461 100644 (file)
@@ -44,7 +44,7 @@ enum rspamd_srv_type {
 enum rspamd_log_pipe_type {
        RSPAMD_LOG_PIPE_SYMBOLS = 0,
 };
-
+#define CONTROL_PATHLEN 400
 struct rspamd_control_command {
        enum rspamd_control_type type;
        union {
@@ -61,7 +61,7 @@ struct rspamd_control_command {
                        guint unused;
                } recompile;
                struct {
-                       gpointer cache_dir;
+                       gchar cache_dir[CONTROL_PATHLEN];
                        gboolean forced;
                } hs_loaded;
                struct {
@@ -112,6 +112,7 @@ struct rspamd_control_reply {
 };
 
 #define PAIR_ID_LEN 16
+
 struct rspamd_srv_command {
        enum rspamd_srv_type type;
        guint64 id;
@@ -122,7 +123,7 @@ struct rspamd_srv_command {
                        guint pair_num;
                } spair;
                struct {
-                       gpointer cache_dir;
+                       gchar cache_dir[CONTROL_PATHLEN];
                        gboolean forced;
                } hs_loaded;
                struct {