From 272d4011eacf839074f6598b0e12bb0db942f377 Mon Sep 17 00:00:00 2001 From: w00t Date: Sat, 25 Mar 2006 21:52:45 +0000 Subject: Possible fix for a desync condition git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@3753 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/users.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/users.cpp') diff --git a/src/users.cpp b/src/users.cpp index 0620a9e0c..ccf754736 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -437,8 +437,18 @@ void DeleteOper(userrec* user) void kill_link(userrec *user,const char* r) { user_hash::iterator iter = clientlist.find(user->nick); - if (iter == clientlist.end()) - return; + + +/* + * I'm pretty sure returning here is causing a desync when part of the net thinks a user is gone, + * and another part doesn't. We want to broadcast the quit/kill before bailing so the net stays in sync. + * + * I can't imagine this blowing up, so I'm commenting it out. We still check + * before playing with a bad iterator below in our if(). DISCUSS THIS BEFORE YOU DO ANYTHING. --w00t + * + * if (iter == clientlist.end()) + * return; + */ char reason[MAXBUF]; -- cgit v1.2.3