summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-05-01 19:41:27 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-05-01 19:41:27 +0000
commitf40ede375016051d9026710122a40a5bbdd93c9f (patch)
tree645db089d16e222df9ec88ff817874b2b761039f
parentb52bfda87559740f6b7f10f2c7a2d2489f9fd574 (diff)
Fix crashbug in latest svn introduced by inspsocket cull list, which can cause a crash if the connection times out and an error occurs on the socket before its deleted
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6855 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--src/inspsocket.cpp8
-rw-r--r--src/modules/m_spanningtree/treesocket1.cpp8
2 files changed, 10 insertions, 6 deletions
diff --git a/src/inspsocket.cpp b/src/inspsocket.cpp
index 3c30fd6e8..cdc0dc26f 100644
--- a/src/inspsocket.cpp
+++ b/src/inspsocket.cpp
@@ -582,13 +582,9 @@ void SocketTimeout::Tick(time_t now)
if (ServerInstance->SocketCull.find(this->sock) == ServerInstance->SocketCull.end())
ServerInstance->SocketCull[this->sock] = this->sock;
-
- return;
- }
- else
- {
- this->sock->Timeout = NULL;
}
+
+ this->sock->Timeout = NULL;
}
bool InspSocket::Poll()
diff --git a/src/modules/m_spanningtree/treesocket1.cpp b/src/modules/m_spanningtree/treesocket1.cpp
index a05ed6e4c..21c6de118 100644
--- a/src/modules/m_spanningtree/treesocket1.cpp
+++ b/src/modules/m_spanningtree/treesocket1.cpp
@@ -216,6 +216,14 @@ void TreeSocket::OnError(InspSocketError e)
if (MyLink)
Utils->DoFailOver(MyLink);
}
+ else
+ {
+ if ((errno) && (errno != EINPROGRESS) && (errno != EAGAIN))
+ {
+ std::string errstr = strerror(errno);
+ this->Instance->SNO->WriteToSnoMask('l',"Connection to \002"+myhost+"\002 failed with error: " + errstr);
+ }
+ }
}
int TreeSocket::OnDisconnect()