- if (rv < 0)
- {
- ServerInstance->SE->Shutdown(this, 2);
- ServerInstance->SE->Close(this);
- this->fd = -1;
- }
- else
- {
- ServerInstance->SE->NonBlocking(this->fd);
- ServerInstance->SE->AddFd(this, FD_WANT_POLL_READ | FD_WANT_NO_WRITE);
- }
+ ServerInstance->SE->SetReuse(fd);
+ int rv = ServerInstance->SE->Bind(this->fd, bind_to);
+ if (rv >= 0)
+ rv = ServerInstance->SE->Listen(this->fd, ServerInstance->Config->MaxConn);
+
+ if (rv < 0)
+ {
+ int errstore = errno;
+ ServerInstance->SE->Shutdown(this, 2);
+ ServerInstance->SE->Close(this);
+ this->fd = -1;
+ errno = errstore;
+ }
+ else
+ {
+ ServerInstance->SE->NonBlocking(this->fd);
+ ServerInstance->SE->AddFd(this, FD_WANT_POLL_READ | FD_WANT_NO_WRITE);