}
/* XXX: Probably belongs in class InspIRCd */
-int InspIRCd::BindPorts(bool bail, int &ports_found)
+int InspIRCd::BindPorts(bool bail, int &ports_found, FailedPortList &failed_ports)
{
char configToken[MAXBUF], Addr[MAXBUF], Type[MAXBUF];
insp_sockaddr client, server;
if ((!*Type) || (!strcmp(Type,"clients")))
{
- irc::portparser portrange(configToken);
+ irc::portparser portrange(configToken, false);
long portno = -1;
- while (portno = portrange.GetToken())
+ while ((portno = portrange.GetToken()))
{
if (!HasPort(portno, Addr))
{
if (fd == ERROR)
{
this->Log(DEBUG,"Bad fd %d binding port [%s:%d]",fd,Config->addrs[count],Config->ports[count]);
+ failed_ports.push_back(std::make_pair(Config->addrs[count],Config->ports[count]));
}
else
{
shutdown(Config->openSockfd[BoundPortCount]->GetFd(),2);
close(Config->openSockfd[BoundPortCount]->GetFd());
delete Config->openSockfd[BoundPortCount];
+ failed_ports.push_back(std::make_pair(Config->addrs[count],Config->ports[count]));
}
else
BoundPortCount++;
if (fd == ERROR)
{
this->Log(DEBUG,"Bad fd %d binding port [%s:%d]",fd,Config->addrs[count],Config->ports[count]);
+ failed_ports.push_back(std::make_pair(Config->addrs[count],Config->ports[count]));
}
else
{
{
BoundPortCount++;
}
+ else
+ failed_ports.push_back(std::make_pair(Config->addrs[count],Config->ports[count]));
}
}
return BoundPortCount;