From: Vsevolod Stakhov Date: Wed, 16 Dec 2015 00:32:47 +0000 (+0000) Subject: Fix some border cases in control logic X-Git-Tag: 1.1.0~281 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=455dd6e0a7eb8aadc77acc4c37d20313bd42ae90;p=thirdparty%2Frspamd.git Fix some border cases in control logic --- diff --git a/src/fuzzy_storage.c b/src/fuzzy_storage.c index 34b5e631f2..72e3bff038 100644 --- a/src/fuzzy_storage.c +++ b/src/fuzzy_storage.c @@ -1089,7 +1089,8 @@ fuzzy_peer_rep (struct rspamd_worker *worker, ctx->peer_fd = rep_fd; if (rep_fd == -1) { - msg_warn ("cannot receive peer fd from the main process"); + msg_err ("cannot receive peer fd from the main process"); + exit (EXIT_FAILURE); } /* Start listening */ diff --git a/src/libserver/rspamd_control.c b/src/libserver/rspamd_control.c index b683ac46ff..df9746abfa 100644 --- a/src/libserver/rspamd_control.c +++ b/src/libserver/rspamd_control.c @@ -543,10 +543,14 @@ rspamd_control_default_worker_handler (gint fd, short what, gpointer ud) r = read (fd, &cmd, sizeof (cmd)); - if (r != sizeof (cmd)) { + if (r == -1) { msg_err ("cannot read request from the control socket: %s", strerror (errno)); } + else if (r < (gint)sizeof (cmd)) { + msg_err ("short read of control command: %d of %d", (gint)r, + (gint)sizeof (cmd)); + } else if ((gint)cmd.type >= 0 && cmd.type < RSPAMD_CONTROL_MAX) { if (cd->handlers[cmd.type].handler) { @@ -557,6 +561,9 @@ rspamd_control_default_worker_handler (gint fd, short what, gpointer ud) rspamd_control_default_cmd_handler (fd, cd, &cmd); } } + else { + msg_err ("unknown command: %d", (gint)cmd.type); + } } void