- if ((this->fd = OpenTCPSocket()) == ERROR)
- {
- this->fd = -1;
- this->state = I_ERROR;
- this->OnError(I_ERR_SOCKET);
- this->Instance->Log(DEBUG,"OpenTCPSocket() error");
- return;
- }
- else
- {
- if (!SI->BindSocket(this->fd,this->client,this->server,aport,(char*)ipaddr.c_str()))
- {
- this->Instance->Log(DEBUG,"BindSocket() error %s",strerror(errno));
- this->Close();
- this->fd = -1;
- this->state = I_ERROR;
- this->OnError(I_ERR_BIND);
- this->ClosePending = true;
- return;
- }
- else
- {
- this->state = I_LISTENING;
- if (this->fd > -1)
- {
- if (!this->Instance->SE->AddFd(this))
- {
- this->Close();
- this->state = I_ERROR;
- this->OnError(I_ERR_NOMOREFDS);
- }
- }
- this->Instance->Log(DEBUG,"New socket now in I_LISTENING state");
- return;
- }
- }