socket: fix socket_setup() compat case
authorMarko Kreen <markokr@gmail.com>
Wed, 13 Jan 2010 07:59:47 +0000 (09:59 +0200)
committerMarko Kreen <markokr@gmail.com>
Wed, 13 Jan 2010 07:59:47 +0000 (09:59 +0200)
ifndef SO_NOSIGPIPE was broken

usual/socket.c

index f6599684f3853d37672c9c5c1454c29ff87e05f8..19d303e66fb73c011a8f09ddc3c9de860fd4f0c0 100644 (file)
@@ -60,19 +60,19 @@ bool socket_setup(int sock, bool non_block)
 {
        int res;
 
-       /* close fd on exec */
-       res = fcntl(sock, F_SETFD, FD_CLOEXEC);
-       if (res < 0)
-               return false;
-
 #ifdef SO_NOSIGPIPE
        /* disallow SIGPIPE, if possible */
-       val = 1;
+       int val = 1;
        res = setsockopt(sock, SOL_SOCKET, SO_NOSIGPIPE, &val, sizeof(val));
        if (res < 0)
                return false;
 #endif
 
+       /* close fd on exec */
+       res = fcntl(sock, F_SETFD, FD_CLOEXEC);
+       if (res < 0)
+               return false;
+
        /* when no data available, return EAGAIN instead blocking */
        if (!socket_set_nonblocking(sock, non_block))
                return false;