From: Martin Konrad <konrad@frib.msu.edu>
Date: Wed, 8 Jul 2020 09:51:18 -0400
Subject: Report error if setsockopt() fails

Origin: upstream, https://github.com/ralphlange/procServ/commit/9078191e8c19d5063a4da738ba8b46eab9f26c78
---
 acceptFactory.cc | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/acceptFactory.cc b/acceptFactory.cc
index 741b6eb..9257912 100755
--- a/acceptFactory.cc
+++ b/acceptFactory.cc
@@ -158,12 +158,24 @@ void acceptItemTCP::remakeConnection()
         throw errno;
     }
 
-    setsockopt(_fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
+    int setsockoptStatus = setsockopt(_fd, SOL_SOCKET, SO_REUSEADDR, &optval,
+                                      sizeof(optval));
+    if (setsockoptStatus < 0)
+        PRINTF("Setsockopt error while trying to set SO_REUSEADDR: %s\n",
+               strerror(errno));
 #ifdef SOLARIS
-    setsockopt(_fd, SOL_SOCKET, SO_EXCLBIND, &optval, sizeof(optval));
+    int setsockoptStatus = setsockopt(_fd, SOL_SOCKET, SO_EXCLBIND, &optval,
+                                      sizeof(optval));
+    if (setsockoptStatus < 0)
+        PRINTF("Setsockopt error while trying to set SO_EXCLBIND: %s\n",
+               strerror(errno));
 #endif
 #ifdef _WIN32
-    setsockopt(_fd, SOL_SOCKET, SO_EXCLUSIVEADDRUSE, &optval, sizeof(optval));
+    int setsockoptStatus = setsockopt(_fd, SOL_SOCKET, SO_EXCLUSIVEADDRUSE,
+                                      &optval, sizeof(optval));
+    if (setsockoptStatus < 0)
+        PRINTF("Setsockopt error while trying to set SO_EXCLUSIVEADDRUSE: %s\n",
+               strerror(errno));
 #endif
 
     bindStatus = bind(_fd, (struct sockaddr *) &addr, sizeof(addr));
