]> source.dussan.org Git - rspamd.git/commitdiff
Block SIGPIPE for HTTP writing.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 15 Oct 2014 13:21:57 +0000 (14:21 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 15 Oct 2014 13:21:57 +0000 (14:21 +0100)
src/libutil/http.c

index c2d103b4ef8eb8bc2464a97d5c0a5c478b78a1c0..e78a798907bffa049de27003c3e2849d5bcc4d65 100644 (file)
@@ -581,10 +581,12 @@ rspamd_http_write_helper (struct rspamd_http_connection *conn)
        struct rspamd_http_connection_private *priv;
        struct iovec *start;
        guint niov, i;
+       gint flags = 0;
        gsize remain;
        gssize r;
        GError *err;
        struct iovec *cur_iov;
+       struct msghdr msg;
 
        priv = conn->priv;
 
@@ -613,7 +615,13 @@ rspamd_http_write_helper (struct rspamd_http_connection *conn)
                }
        }
 
-       r = writev (conn->fd, start, MIN (IOV_MAX, niov));
+       memset (&msg, 0, sizeof (msg));
+       msg.msg_iov = start;
+       msg.msg_iovlen = MIN (IOV_MAX, niov);
+#ifdef MSG_NOSIGNAL
+       flags = MSG_NOSIGNAL;
+#endif
+       r = sendmsg (conn->fd, &msg, flags);
 
        if (r == -1) {
                err =