aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2017-01-17 14:04:58 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2017-01-17 14:09:51 +0000
commit213ea1bc48fcd7bdda92fa86cba5c5ba769bae2f (patch)
treeb6180f4fea5c621dce2ea7568eed97475ae8f4ea
parent049599ba091eefc089ebcccccaf53cd5e10ba875 (diff)
downloadrspamd-213ea1bc48fcd7bdda92fa86cba5c5ba769bae2f.tar.gz
rspamd-213ea1bc48fcd7bdda92fa86cba5c5ba769bae2f.zip
[Fix] Fix reload and hyperscan ready event
MFH: true
-rw-r--r--src/hs_helper.c3
-rw-r--r--src/libserver/rspamd_control.c4
-rw-r--r--src/libserver/rspamd_control.h7
3 files changed, 9 insertions, 5 deletions
diff --git a/src/hs_helper.c b/src/hs_helper.c
index e3aee6cbc..088aba8ae 100644
--- a/src/hs_helper.c
+++ b/src/hs_helper.c
@@ -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);
diff --git a/src/libserver/rspamd_control.c b/src/libserver/rspamd_control.c
index d680c35b1..592e3dbc1 100644
--- a/src/libserver/rspamd_control.c
+++ b/src/libserver/rspamd_control.c
@@ -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);
diff --git a/src/libserver/rspamd_control.h b/src/libserver/rspamd_control.h
index fd24b856b..c7a60ef58 100644
--- a/src/libserver/rspamd_control.h
+++ b/src/libserver/rspamd_control.h
@@ -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 {