Author: jilles
Date: Sat Jun  2 20:18:34 2012
New Revision: 236490
URL: http://svn.freebsd.org/changeset/base/236490

Log:
  MFC r236193: libfetch: Avoid SIGPIPE on network connections.
  
  To avoid unexpected process termination from SIGPIPE when writing to a
  closed network connection, enable SO_NOSIGPIPE on all network connections.
  
  The POSIX standard MSG_NOSIGNAL is not used since it requires modifying all
  send calls to add this flag. This is particularly nasty for SSL connections.

Modified:
  stable/9/lib/libfetch/common.c
Directory Properties:
  stable/9/lib/libfetch/   (props changed)

Modified: stable/9/lib/libfetch/common.c
==============================================================================
--- stable/9/lib/libfetch/common.c      Sat Jun  2 20:00:52 2012        
(r236489)
+++ stable/9/lib/libfetch/common.c      Sat Jun  2 20:18:34 2012        
(r236490)
@@ -209,11 +209,13 @@ conn_t *
 fetch_reopen(int sd)
 {
        conn_t *conn;
+       int opt = 1;
 
        /* allocate and fill connection structure */
        if ((conn = calloc(1, sizeof(*conn))) == NULL)
                return (NULL);
        fcntl(sd, F_SETFD, FD_CLOEXEC);
+       setsockopt(sd, SOL_SOCKET, SO_NOSIGPIPE, &opt, sizeof opt);
        conn->sd = sd;
        ++conn->ref;
        return (conn);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to