X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fngircd%2Firc.c;h=a1d073c1468dccc6a8a5410c6e733f2978581683;hb=5462c6c50fd01fd516e29a42ee0b15c946c11d27;hp=67ad2a633a16747f49511154f205e47204263e45;hpb=e1de769ab9958f6debbd884a1555de09d1191d32;p=ngircd.git diff --git a/src/ngircd/irc.c b/src/ngircd/irc.c index 67ad2a63..a1d073c1 100644 --- a/src/ngircd/irc.c +++ b/src/ngircd/irc.c @@ -22,10 +22,8 @@ static char UNUSED id[] = "$Id: irc.c,v 1.132 2008/01/15 22:28:14 fw Exp $"; #include #include "ngircd.h" -#include "resolve.h" #include "conn-func.h" #include "conf.h" -#include "client.h" #include "channel.h" #include "defines.h" #include "irc-write.h" @@ -70,7 +68,7 @@ IRC_ERROR( CLIENT *Client, REQUEST *Req ) * disconnect clients. It can be used by IRC operators and servers, for example * to "solve" nick collisions after netsplits. * Please note that this function is also called internally, without a real - * KILL command beeing received over the network! Client is Client_ThisServer() + * KILL command being received over the network! Client is Client_ThisServer() * in this case. */ GLOBAL bool IRC_KILL( CLIENT *Client, REQUEST *Req ) @@ -160,11 +158,15 @@ IRC_KILL( CLIENT *Client, REQUEST *Req ) Client_Type( c ), Req->argv[0] ); } - /* Kill client NOW! */ + /* Kill the client NOW: + * - Close the local connection (if there is one), + * - Destroy the CLIENT structure for remote clients. + * Note: Conn_Close() removes the CLIENT structure as well. */ conn = Client_Conn( c ); - Client_Destroy( c, NULL, reason, false ); - if( conn > NONE ) - Conn_Close( conn, NULL, reason, true ); + if(conn > NONE) + Conn_Close(conn, NULL, reason, true); + else + Client_Destroy(c, NULL, reason, false); } else Log( LOG_NOTICE, "Client with nick \"%s\" is unknown here.", Req->argv[0] );