- if (((!*Type) || (!strcmp(Type,"clients"))) && (!HasPort(atoi(configToken),Addr)))
- {
- // modules handle server bind types now
- Config->ports[clientportcount+InitialPortCount] = atoi(configToken);
- if (*Addr == '*')
- *Addr = 0;
-
- strlcpy(Config->addrs[clientportcount+InitialPortCount],Addr,256);
- clientportcount++;
- log(DEBUG,"NEW binding %s:%s [%s] from config",Addr,configToken, Type);
- }
- }
- int PortCount = clientportcount;
- if (PortCount)
- {
- for (int count = InitialPortCount; count < InitialPortCount + PortCount; count++)
- {
- if ((Config->openSockfd[count] = OpenTCPSocket()) == ERROR)
- {
- log(DEBUG,"Bad fd %d binding port [%s:%d]",Config->openSockfd[count],Config->addrs[count],Config->ports[count]);
- return ERROR;
- }
- if (!BindSocket(Config->openSockfd[count],client,server,Config->ports[count],Config->addrs[count]))
- {
- log(DEFAULT,"Failed to bind port [%s:%d]: %s",Config->addrs[count],Config->ports[count],strerror(errno));
- }
- else
- {
- /* Associate the new open port with a slot in the socket engine */
- if (Config->openSockfd[count] > -1)
- {
- ServerInstance->SE->AddFd(Config->openSockfd[count],true,X_LISTEN);
- BoundPortCount++;
- }
- }
- }
- return InitialPortCount + BoundPortCount;
- }
- else
- {
- log(DEBUG,"There is nothing new to bind!");
- }
- return InitialPortCount;