From 186f9ab430c1f20efb595da504570fd0b575836a Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Mon, 2 Mar 2009 17:35:03 +0300 Subject: [PATCH] * Properly set initial state for surbl state machine * Ignore SIGPIPE globally as dispatcher performs check of all write (2) calls --- src/plugins/surbl.c | 3 +-- src/util.c | 7 +++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/plugins/surbl.c b/src/plugins/surbl.c index cd814187f3..5b9b355466 100644 --- a/src/plugins/surbl.c +++ b/src/plugins/surbl.c @@ -511,7 +511,6 @@ redirector_callback (int fd, short what, void *arg) if (*p == '\0') { msg_info ("redirector_callback: got reply from redirector: '%s' -> '%s'", struri (param->url), c); parse_uri (param->url, c, param->task->task_pool); - param->task->save.saved ++; } } event_del (¶m->ev); @@ -572,7 +571,7 @@ register_redirector_call (struct uri *url, struct worker_task *task) param = memory_pool_alloc (task->task_pool, sizeof (struct redirector_param)); param->url = url; param->task = task; - param->state = STATE_READ; + param->state = STATE_CONNECT; param->sock = s; timeout.tv_sec = surbl_module_ctx->connect_timeout / 1000; timeout.tv_usec = surbl_module_ctx->connect_timeout - timeout.tv_sec * 1000; diff --git a/src/util.c b/src/util.c index afcb13b23d..fac109c78c 100644 --- a/src/util.c +++ b/src/util.c @@ -165,6 +165,7 @@ write_pid (struct rspamd_main *main) void init_signals (struct sigaction *signals, sig_t sig_handler) { + struct sigaction sigpipe_act; /* Setting up signal handlers */ /* SIGUSR1 - reopen config file */ /* SIGUSR2 - worker is ready for accept */ @@ -186,6 +187,12 @@ init_signals (struct sigaction *signals, sig_t sig_handler) sigaction (SIGUSR1, signals, NULL); sigaction (SIGUSR2, signals, NULL); sigaction (SIGALRM, signals, NULL); + + /* Ignore SIGPIPE as we handle write errors manually */ + sigemptyset (&sigpipe_act.sa_mask); + sigaddset (&sigpipe_act.sa_mask, SIGPIPE); + sigpipe_act.sa_handler = SIG_IGN; + sigaction (SIGPIPE, &sigpipe_act, NULL); } void -- 2.47.3