+ this->Logs->Log("SOCKET", LOG_DEBUG, "New socket binding for %d without listen: %s:%d", sockfd, addr, port);
+ return true;
+ }
+ }
+}
+
+int InspIRCd::BindPorts(FailedPortList &failed_ports)
+{
+ int bound = 0;
+ std::vector<ListenSocket*> old_ports(ports.begin(), ports.end());
+
+ ConfigTagList tags = ServerInstance->Config->ConfTags("bind");
+ for(ConfigIter i = tags.first; i != tags.second; ++i)
+ {
+ ConfigTag* tag = i->second;
+ std::string porttag = tag->getString("port");
+ std::string Addr = tag->getString("address");
+
+ if (strncasecmp(Addr.c_str(), "::ffff:", 7) == 0)
+ this->Logs->Log("SOCKET", LOG_DEFAULT, "Using 4in6 (::ffff:) isn't recommended. You should bind IPv4 addresses directly instead.");
+
+ irc::portparser portrange(porttag, false);
+ int portno = -1;
+ while (0 != (portno = portrange.GetToken()))
+ {
+ irc::sockets::sockaddrs bindspec;
+ if (!irc::sockets::aptosa(Addr, portno, bindspec))
+ continue;
+ std::string bind_readable = bindspec.str();
+
+ bool skip = false;
+ for (std::vector<ListenSocket*>::iterator n = old_ports.begin(); n != old_ports.end(); ++n)