mirror of
https://github.com/3lswear/webserv.git
synced 2025-10-28 21:07:59 +03:00
feat: don't bind twice on same port
This commit is contained in:
@@ -194,18 +194,28 @@ void Server::setup_server_socks(std::map<int, Socket> &configurations_map)
|
|||||||
it != _configs.end(); ++it)
|
it != _configs.end(); ++it)
|
||||||
{
|
{
|
||||||
ServerConfig *config = *it;
|
ServerConfig *config = *it;
|
||||||
Socket server_sock(AF_INET, SOCK_STREAM, 0, config->getPort(), config->getHost());
|
std::map<int, Socket>::iterator sock_it;
|
||||||
|
|
||||||
|
for (sock_it = configurations_map.begin();
|
||||||
|
sock_it != configurations_map.end(); ++sock_it)
|
||||||
|
{
|
||||||
|
if ((config->getPort() == sock_it->second.port) && (config->getHost() == sock_it->second.ip))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (sock_it != configurations_map.end())
|
||||||
|
continue;
|
||||||
|
Socket server_sock(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, 0, config->getPort(), config->getHost());
|
||||||
if (server_sock.init(MAX_CLIENT) >= 0)
|
if (server_sock.init(MAX_CLIENT) >= 0)
|
||||||
{
|
{
|
||||||
setNonBlock(server_sock.getFd());
|
|
||||||
/* configurations_map[server_sock.getSocketFd()] = server_sock; */
|
/* configurations_map[server_sock.getSocketFd()] = server_sock; */
|
||||||
configurations_map.insert(std::make_pair(server_sock.getFd(), server_sock));
|
configurations_map.insert(std::make_pair(server_sock.getFd(), server_sock));
|
||||||
DBOUT << YELLO << "adding server_sock..." << ENDL;
|
DBOUT << YELLO << "adding server_sock..." << ENDL;
|
||||||
add_to_epoll_list(server_sock.getFd(), server_events);
|
add_to_epoll_list(server_sock.getFd(), server_events);
|
||||||
|
|
||||||
std::cerr << GREEN
|
std::cerr << getDebugTime() << GREEN
|
||||||
<< config->getServerName()
|
<< " listening on "
|
||||||
<< " started on "
|
|
||||||
<< config->getHost()
|
<< config->getHost()
|
||||||
<< ":"
|
<< ":"
|
||||||
<< config->getPort()
|
<< config->getPort()
|
||||||
@@ -213,7 +223,7 @@ void Server::setup_server_socks(std::map<int, Socket> &configurations_map)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::cerr << RED
|
std::cerr << getDebugTime() << FAIL
|
||||||
<< config->getServerName()
|
<< config->getServerName()
|
||||||
<< " failed to bind to "
|
<< " failed to bind to "
|
||||||
<< config->getHost()
|
<< config->getHost()
|
||||||
|
|||||||
Reference in New Issue
Block a user