Don't leak socket on setsockopt() errors
diff --git a/common/network/TcpSocket.cxx b/common/network/TcpSocket.cxx
index f51873c..9ac1478 100644
--- a/common/network/TcpSocket.cxx
+++ b/common/network/TcpSocket.cxx
@@ -443,8 +443,11 @@
   memcpy (&sa, listenaddr, listenaddrlen);
 #ifdef IPV6_V6ONLY
   if (listenaddr->sa_family == AF_INET6) {
-    if (setsockopt (sock, IPPROTO_IPV6, IPV6_V6ONLY, (char*)&one, sizeof(one)))
-      throw SocketException("unable to set IPV6_V6ONLY", errorNumber);
+    if (setsockopt (sock, IPPROTO_IPV6, IPV6_V6ONLY, (char*)&one, sizeof(one))) {
+      int e = errorNumber;
+      closesocket(sock);
+      throw SocketException("unable to set IPV6_V6ONLY", e);
+    }
   }
 #endif /* defined(IPV6_V6ONLY) */