/* This is a server socket */
if (server)
{
+ /*
+ * Allow a new server to bind the socket after the old one exited,
+ * even if lingering sockets are still present.
+ */
+ int optval = 1;
+ if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) < 0)
+ {
+ sock_geterror("socket(): ", errbuf, errbuflen);
+ /* dont treat an error as a failure */
+ SOCK_DEBUG_MESSAGE(errbuf);
+ }
+
#if defined(IPV6_V6ONLY) || defined(IPV6_BINDV6ONLY)
/*
* Force the use of IPv6-only addresses.