added setsockopt to avoid reusability issue on socket fd
This commit is contained in:
@@ -24,6 +24,18 @@ void Webserv::init_virtual_servers(std::vector<ServerConfig>* servers)
|
|||||||
std::perror("err socket()");
|
std::perror("err socket()");
|
||||||
throw std::runtime_error("Socket init");
|
throw std::runtime_error("Socket init");
|
||||||
}
|
}
|
||||||
|
// HUGO ADD
|
||||||
|
//
|
||||||
|
// allow socket descriptor to be reuseable
|
||||||
|
// I just copied it from https://www.ibm.com/docs/en/i/7.2?topic=designs-example-nonblocking-io-select
|
||||||
|
int on = 1;
|
||||||
|
if (setsockopt(ret, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on)) < 0)
|
||||||
|
{
|
||||||
|
::perror("err setsockopt()");
|
||||||
|
throw std::runtime_error("Socket init");
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// HUGO ADD END
|
||||||
_listen_sockets.push_back(ret);
|
_listen_sockets.push_back(ret);
|
||||||
|
|
||||||
_bind(_listen_sockets.back(), std::atoi(it->port.data()), it->host);
|
_bind(_listen_sockets.back(), std::atoi(it->port.data()), it->host);
|
||||||
|
|||||||
Reference in New Issue
Block a user