diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-03-28 18:57:00 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-03-28 18:57:00 +0000 |
commit | a46930efdc701520a187263e0f08195dcb344ef2 (patch) | |
tree | 8903a7385758ac3b0d26bdefcc8525b90bb72b74 | |
parent | 42bd45a4ce546b2bdbee894c1e8fff8e19d9ecfd (diff) |
Backport of 100% cpu on connection refused bug
Technical details: Set this->ClosePending on connection refused error so that within one cycle it is removed from the list
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@3787 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r-- | src/socket.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/socket.cpp b/src/socket.cpp index e217720f2..e1f0d2c23 100644 --- a/src/socket.cpp +++ b/src/socket.cpp @@ -71,6 +71,7 @@ InspSocket::InspSocket(const std::string &ahost, int aport, bool listening, unsi this->fd = -1; this->state = I_ERROR; this->OnError(I_ERR_SOCKET); + this->ClosePending = true; log(DEBUG,"OpenTCPSocket() error"); return; } @@ -82,6 +83,7 @@ InspSocket::InspSocket(const std::string &ahost, int aport, bool listening, unsi this->fd = -1; this->state = I_ERROR; this->OnError(I_ERR_BIND); + this->ClosePending = true; log(DEBUG,"BindSocket() error %s",strerror(errno)); return; } @@ -150,6 +152,7 @@ bool InspSocket::DoResolve() this->state = I_ERROR; this->OnError(I_ERR_RESOLVE); this->fd = -1; + this->ClosePending = true; return false; } return this->DoConnect(); @@ -189,6 +192,7 @@ bool InspSocket::DoConnect() this->state = I_ERROR; this->Close(); this->fd = -1; + this->ClosePending = true; return false; } } @@ -209,6 +213,7 @@ void InspSocket::Close() shutdown(this->fd,2); close(this->fd); socket_ref[this->fd] = NULL; + this->ClosePending = true; this->fd = -1; } } |