Merge pull request #289 from 3cky/set-reuseaddr-listen-sock

Set SO_REUSEADDR option to listen sockets on non-Windows systems
This commit is contained in:
AlexandreRouma 2021-08-21 13:42:54 +02:00 committed by GitHub
commit 53cb328c2c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -371,6 +371,18 @@ namespace net {
return NULL;
}
#ifndef _WIN32
// Allow port reusing if the app was killed or crashed
// and the socket is stuck in TIME_WAIT state.
// This option has a different meaning on Windows,
// so we use it only for non-Windows systems
int enable = 1;
if (setsockopt(listenSock, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof (int)) < 0) {
throw std::runtime_error("Could not configure socket");
return NULL;
}
#endif
// Get address from hostname/ip
hostent* remoteHost = gethostbyname(host.c_str());
if (remoteHost == NULL || remoteHost->h_addr_list[0] == NULL) {