From 9067d816e5797676004ae50babb262dc4ca702e1 Mon Sep 17 00:00:00 2001 From: brain Date: Tue, 24 May 2005 17:10:19 +0000 Subject: Added extra code to notify mainloop when the iterator has been mangled (e.g. by netsplit quits) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@1499 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/servers.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/servers.cpp') diff --git a/src/servers.cpp b/src/servers.cpp index ff5f40a68..a791d3557 100644 --- a/src/servers.cpp +++ b/src/servers.cpp @@ -36,8 +36,11 @@ using namespace std; extern time_t TIME; extern int MaxConn; + extern serverrec* me[32]; +extern bool has_been_netsplit; + std::deque xsums; serverrec::serverrec() @@ -308,6 +311,7 @@ void serverrec::FlushWriteBuffers() WriteOpers("*** Server %s is no longer routable, disconnecting.",this->connectors[i].GetServerName().c_str()); DoSplit(this->connectors[i].GetServerName().c_str()); } + has_been_netsplit = true; } } if (this->connectors[i].HasBufferedOutput()) @@ -323,6 +327,7 @@ void serverrec::FlushWriteBuffers() WriteOpers("*** Server %s is no longer routable, disconnecting.",this->connectors[i].GetServerName().c_str()); DoSplit(this->connectors[i].GetServerName().c_str()); } + has_been_netsplit = true; } } } @@ -457,6 +462,7 @@ bool serverrec::RecvPacket(std::deque &messages, char* recvhost,std WriteOpers("*** Server %s is no longer routable, disconnecting.",this->connectors[i].GetServerName().c_str()); DoSplit(this->connectors[i].GetServerName().c_str()); } + has_been_netsplit = true; } } int pushed = 0; @@ -472,6 +478,7 @@ bool serverrec::RecvPacket(std::deque &messages, char* recvhost,std WriteOpers("*** Server %s is no longer routable, disconnecting.",this->connectors[i].GetServerName().c_str()); DoSplit(this->connectors[i].GetServerName().c_str()); } + has_been_netsplit = true; } if (this->connectors[i].BufferIsComplete()) { -- cgit v1.2.3