]> source.dussan.org Git - rspamd.git/commitdiff
* Properly set initial state for surbl state machine
authorVsevolod Stakhov <vsevolod@rambler-co.ru>
Mon, 2 Mar 2009 14:35:03 +0000 (17:35 +0300)
committerVsevolod Stakhov <vsevolod@rambler-co.ru>
Mon, 2 Mar 2009 14:35:03 +0000 (17:35 +0300)
* Ignore SIGPIPE globally as dispatcher performs check of all write (2) calls

src/plugins/surbl.c
src/util.c

index cd814187f384b8303f11c8d324d3cbd791fa2ab8..5b9b355466ef440d613e9c9dd8a7c1d4c9637836 100644 (file)
@@ -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 (&param->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;
index afcb13b23da20f84582dc13c69f764d0edf1b1de..fac109c78cb06a2196775e84eee552eabd293670 100644 (file)
@@ -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