diff options
Diffstat (limited to 'src/sock.c')
-rw-r--r-- | src/sock.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -192,6 +192,7 @@ int listen_sock (const char *addr, uint16_t port, vector_t listen_fds) for (rp = result; rp != NULL; rp = rp->ai_next) { int listenfd; + int lret; listenfd = socket (rp->ai_family, rp->ai_socktype, rp->ai_protocol); @@ -202,8 +203,15 @@ int listen_sock (const char *addr, uint16_t port, vector_t listen_fds) continue; } - setsockopt (listenfd, SOL_SOCKET, SO_REUSEADDR, &on, - sizeof (on)); + lret = setsockopt (listenfd, SOL_SOCKET, SO_REUSEADDR, &on, + sizeof (on)); + if (lret != 0) { + log_message (LOG_ERR, + "setsockopt failed to set SO_REUSEADDR: " + "%s", strerror(errno)); + close(listenfd); + continue; + } if (bind(listenfd, rp->ai_addr, rp->ai_addrlen) != 0) { close (listenfd); |