irc::sockets::sockaddrs ListenSocketBase::client;
irc::sockets::sockaddrs ListenSocketBase::server;
-ListenSocketBase::ListenSocketBase(InspIRCd* Instance, int port, const std::string &addr) : ServerInstance(Instance), desc("plaintext")
+ListenSocketBase::ListenSocketBase(int port, const std::string &addr, const std::string &Type, const std::string &Hook)
+ : type(Type), hook(Hook), bind_port(port)
{
irc::sockets::sockaddrs bind_to;
// canonicalize address if it is defined
- if (!irc::sockets::aptosa(addr.c_str(), port, &bind_to))
+ if (!irc::sockets::aptosa(addr, port, &bind_to))
{
// malformed address
bind_addr = addr;
- bind_port = port;
bind_desc = addr + ":" + ConvToStr(port);
this->fd = -1;
}
else
{
- irc::sockets::satoap(&bind_to, bind_addr, bind_port);
+ irc::sockets::satoap(&bind_to, bind_addr, port);
bind_desc = irc::sockets::satouser(&bind_to);
- this->fd = irc::sockets::OpenTCPSocket(bind_addr.c_str());
+ this->fd = irc::sockets::OpenTCPSocket(bind_addr);
}
if (this->fd > -1)
{
- int rv = Instance->SE->Bind(this->fd, &bind_to.sa, sizeof(bind_to));
+ int rv = ServerInstance->SE->Bind(this->fd, &bind_to.sa, sizeof(bind_to));
if (rv >= 0)
- rv = Instance->SE->Listen(this->fd, Instance->Config->MaxConn);
+ rv = ServerInstance->SE->Listen(this->fd, ServerInstance->Config->MaxConn);
if (rv < 0)
{
- Instance->SE->Shutdown(this, 2);
- Instance->SE->Close(this);
+ ServerInstance->SE->Shutdown(this, 2);
+ ServerInstance->SE->Close(this);
this->fd = -1;
}
else
{
- Instance->SE->NonBlocking(this->fd);
- Instance->SE->AddFd(this);
+ ServerInstance->SE->NonBlocking(this->fd);
+ ServerInstance->SE->AddFd(this, FD_WANT_POLL_READ | FD_WANT_NO_WRITE);
}
}
}
void ClientListenSocket::OnAcceptReady(int nfd)
{
- ServerInstance->Users->AddUser(ServerInstance, nfd, this, &client, &server);
+ ServerInstance->Users->AddUser(nfd, this, &client, &server);
}