Don't forward KILLs to other servers if they've been blocked locally
authorJames Lu <james@overdrivenetworks.com>
Tue, 26 Sep 2017 20:50:20 +0000 (13:50 -0700)
committerAlexander Barton <alex@barton.de>
Tue, 26 Sep 2017 20:50:20 +0000 (22:50 +0200)
This prevents clients from killing IRC services, for example.

Closes #238.
Closes #239.

src/ngircd/irc.c

index d5e4bde..a6f04cb 100644 (file)
@@ -362,11 +362,6 @@ IRC_KillClient(CLIENT *Client, CLIENT *From, const char *Nick, const char *Reaso
                return CONNECTED;
        }
 
-       /* Inform other servers */
-       IRC_WriteStrServersPrefix(From ? Client : NULL,
-                                 From ? From : Client_ThisServer(),
-                                 "KILL %s :%s", Nick, Reason);
-
        if (Client_Type(c) != CLIENT_USER && Client_Type(c) != CLIENT_GOTNICK) {
                /* Target of this KILL is not a regular user, this is
                 * invalid! So we ignore this case if we received a
@@ -388,6 +383,12 @@ IRC_KillClient(CLIENT *Client, CLIENT *From, const char *Nick, const char *Reaso
                    Client_Type(c), Nick);
        }
 
+       /* Inform other servers */
+       IRC_WriteStrServersPrefix(From ? Client : NULL,
+                                 From ? From : Client_ThisServer(),
+                                 "KILL %s :%s", Nick, Reason);
+
+
        /* Save ID of this connection */
        if (Client)
                my_conn = Client_Conn(Client);