From a46930efdc701520a187263e0f08195dcb344ef2 Mon Sep 17 00:00:00 2001 From: brain Date: Tue, 28 Mar 2006 18:57:00 +0000 Subject: 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 --- src/socket.cpp | 5 +++++ 1 file changed, 5 insertions(+) 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; } } -- cgit v1.2.3