diff options
author | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2010-06-24 18:25:16 +0400 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2010-06-24 18:25:16 +0400 |
commit | 9727678e705943da9e44130ce485b1bdab0a8e96 (patch) | |
tree | 082bbaaed64cce1e790ace55981b36a3344c621e /src/lmtp.c | |
parent | bae6d9e54d8bb711144fbcf7dde1b155f471b1cd (diff) | |
download | rspamd-9727678e705943da9e44130ce485b1bdab0a8e96.tar.gz rspamd-9727678e705943da9e44130ce485b1bdab0a8e96.zip |
* Check return value of each rspamd_dispatcher_write as in case of write errors sessions can be destroyed early
Diffstat (limited to 'src/lmtp.c')
-rw-r--r-- | src/lmtp.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/lmtp.c b/src/lmtp.c index 385debfbb..47962ce93 100644 --- a/src/lmtp.c +++ b/src/lmtp.c @@ -147,10 +147,7 @@ lmtp_read_socket (f_str_t * in, void *arg) r = process_message (lmtp->task); r = process_filters (lmtp->task); if (r == -1) { - task->last_error = "Filter processing error"; - task->error_code = LMTP_FAILURE; - task->state = WRITE_ERROR; - lmtp_write_socket (lmtp); + return FALSE; } else if (r == 0) { task->state = WAIT_FILTER; @@ -262,7 +259,9 @@ accept_socket (int fd, short what, void *arg) /* Set up dispatcher */ new_task->dispatcher = rspamd_create_dispatcher (nfd, BUFFER_LINE, lmtp_read_socket, lmtp_write_socket, lmtp_err_socket, &io_tv, (void *)lmtp); new_task->dispatcher->peer_addr = new_task->client_addr.s_addr; - rspamd_dispatcher_write (lmtp->task->dispatcher, greetingbuf, strlen (greetingbuf), FALSE, FALSE); + if (! rspamd_dispatcher_write (lmtp->task->dispatcher, greetingbuf, strlen (greetingbuf), FALSE, FALSE)) { + msg_warn ("cannot write greeting"); + } } /* |