From b41d140984604e31f94e680257bfedc9893eb181 Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Fri, 8 Nov 2013 11:41:35 +0100 Subject: sock: in listen_sock(), detect and log failure to call setsockopt() Signed-off-by: Michael Adam --- src/sock.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/sock.c b/src/sock.c index b95f69c..097af25 100644 --- a/src/sock.c +++ b/src/sock.c @@ -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); -- cgit v1.2.3