summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-03-28 18:57:00 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-03-28 18:57:00 +0000
commita46930efdc701520a187263e0f08195dcb344ef2 (patch)
tree8903a7385758ac3b0d26bdefcc8525b90bb72b74
parent42bd45a4ce546b2bdbee894c1e8fff8e19d9ecfd (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.cpp5
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;
}
}