]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
mail-filter: Handle handshake write() failure
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 10 Feb 2017 11:13:01 +0000 (13:13 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 10 Feb 2017 11:34:54 +0000 (13:34 +0200)
src/plugins/mail-filter/istream-ext-filter.c

index 7ca1e9ca6d95070e58489339e2a9aa4ee1ca3019..07869519acf54d2ddd50630be14b84cd33683790 100644 (file)
@@ -156,6 +156,7 @@ static int filter_connect(struct mail_filter_istream *mstream,
 {
        const char **argv;
        string_t *str;
+       ssize_t ret;
        int fd;
 
        argv = t_strsplit(args, " ");
@@ -187,7 +188,14 @@ static int filter_connect(struct mail_filter_istream *mstream,
        }
        str_append_c(str, '\n');
 
-       o_stream_send(mstream->ext_out, str_data(str), str_len(str));
+       ret = o_stream_send(mstream->ext_out, str_data(str), str_len(str));
+       if (ret < 0) {
+               i_error("ext-filter: write(%s) failed: %s", socket_path,
+                       o_stream_get_error(mstream->ext_out));
+               i_stream_mail_filter_close(&mstream->istream.iostream, FALSE);
+               return -1;
+       }
+       i_assert((size_t)ret == str_len(str));
        return 0;
 }