irc::sockets::satoap(bind_to, bind_addr, bind_port);
bind_desc = irc::sockets::satouser(bind_to);
- fd = irc::sockets::OpenTCPSocket(bind_addr);
+ fd = socket(bind_to.sa.sa_family, SOCK_STREAM, 0);
if (this->fd > -1)
{
- int rv = ServerInstance->SE->Bind(this->fd, &bind_to.sa, sizeof(bind_to));
+ ServerInstance->SE->SetReuse(fd);
+ int rv = ServerInstance->SE->Bind(this->fd, bind_to);
if (rv >= 0)
rv = ServerInstance->SE->Listen(this->fd, ServerInstance->Config->MaxConn);
irc::sockets::sockaddrs client;
irc::sockets::sockaddrs server;
- ServerInstance->Logs->Log("SOCKET",DEBUG,"HandleEvent for Listensoket");
- int incomingSockfd;
-
socklen_t length = sizeof(client);
- incomingSockfd = ServerInstance->SE->Accept(this, &client.sa, &length);
+ int incomingSockfd = ServerInstance->SE->Accept(this, &client.sa, &length);
+ ServerInstance->Logs->Log("SOCKET",DEBUG,"HandleEvent for Listensoket %s nfd=%d", bind_desc.c_str(), incomingSockfd);
if (incomingSockfd < 0)
{
- ServerInstance->SE->Shutdown(incomingSockfd, 2);
- ServerInstance->SE->Close(incomingSockfd);
ServerInstance->stats->statsRefused++;
return;
}
}
ServerInstance->SE->NonBlocking(incomingSockfd);
- ServerInstance->stats->statsAccept++;
ModResult res;
FIRST_MOD_RESULT(OnAcceptConnection, res, (incomingSockfd, this, &client, &server));
res = MOD_RES_ALLOW;
}
}
- if (res != MOD_RES_ALLOW)
+ if (res == MOD_RES_ALLOW)
{
+ ServerInstance->stats->statsAccept++;
+ }
+ else
+ {
+ ServerInstance->stats->statsRefused++;
ServerInstance->Logs->Log("SOCKET",DEFAULT,"Refusing connection on %s - %s",
bind_desc.c_str(), res == MOD_RES_DENY ? "Connection refused by module" : "Module for this port not found");
ServerInstance->SE->Close(incomingSockfd);