]> git.ozlabs.org Git - ccan/blobdiff - ccan/net/net.c
tools/configurator: better descriptions for --autotools-style.
[ccan] / ccan / net / net.c
index 7867054d9adf6c39bb48d68d8221c09c19925b86..11c6b670aa456809f528c0eb6d905d2cb3c0b5bb 100644 (file)
@@ -1,10 +1,7 @@
 /* Licensed under BSD-MIT - see LICENSE file for details */
 #include <ccan/net/net.h>
 #include <ccan/noerr/noerr.h>
-#include <sys/types.h>
-#include <sys/socket.h>
 #include <poll.h>
-#include <netdb.h>
 #include <string.h>
 #include <stdlib.h>
 #include <unistd.h>
@@ -234,14 +231,16 @@ static bool should_listen(const struct addrinfo *addrinfo)
 
 static int make_listen_fd(const struct addrinfo *addrinfo)
 {
-       int saved_errno, fd, on = 1;
+       int fd, on = 1;
 
        fd = socket(addrinfo->ai_family, addrinfo->ai_socktype,
                    addrinfo->ai_protocol);
        if (fd < 0)
                return -1;
 
-       setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
+       if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) != 0)
+               goto fail;
+
        if (bind(fd, addrinfo->ai_addr, addrinfo->ai_addrlen) != 0)
                goto fail;
 
@@ -250,9 +249,7 @@ static int make_listen_fd(const struct addrinfo *addrinfo)
        return fd;
 
 fail:
-       saved_errno = errno;
-       close(fd);
-       errno = saved_errno;
+       close_noerr(fd);
        return -1;
 }