]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Kill fixes
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Thu, 19 May 2005 21:14:28 +0000 (21:14 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Thu, 19 May 2005 21:14:28 +0000 (21:14 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@1454 e03df62e-2008-0410-955e-edbf42e46eb7

src/inspircd.cpp

index b026723a00eee055ad8704678fc0be4dbb89fb56..3de9ede89dd530c60a061bad138c087e6368766e 100644 (file)
@@ -1081,6 +1081,8 @@ void kill_link(userrec *user,const char* r)
                NetSendToAll(buffer);
        }
 
+       user->FlushWriteBuf();
+
        FOREACH_MOD OnUserDisconnect(user);
 
        if (user->fd > -1)
@@ -1108,15 +1110,14 @@ void kill_link(userrec *user,const char* r)
                 shutdown(user->fd,2);
                 close(user->fd);
        }
-       
-       if (user->registered == 7) {
-               WriteOpers("*** Client exiting: %s!%s@%s [%s]",user->nick,user->ident,user->host,reason);
-               AddWhoWas(user);
-       }
 
+       // this must come before the WriteOpers so that it doesnt try to fill their buffer with anything
+       // if they were an oper with +s.
         if (user->registered == 7) {
                 purge_empty_chans(user);
-        }
+               WriteOpers("*** Client exiting: %s!%s@%s [%s]",user->nick,user->ident,user->host,reason);
+               AddWhoWas(user);
+       }
 
        if (iter != clientlist.end())
        {
@@ -1145,6 +1146,8 @@ void kill_link_silent(userrec *user,const char* r)
        Write(user->fd,"ERROR :Closing link (%s@%s) [%s]",user->ident,user->host,reason);
        log(DEBUG,"closing fd %lu",(unsigned long)user->fd);
 
+       user->FlushWriteBuf();
+
        if (user->registered == 7) {
                FOREACH_MOD OnUserQuit(user);
                WriteCommonExcept(user,"QUIT :%s",reason);