X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fngircd%2Firc.c;h=75af32111d835a9a812e495cb8bff63ad1e75658;hb=c135d0dded909e2e5780697c4066ad44a3f488c8;hp=b4db3b77473955f6c04c5952df444f9f2692c190;hpb=6dc80bd195ad0760bb560177d6f91c86b7698758;p=ngircd-alex.git diff --git a/src/ngircd/irc.c b/src/ngircd/irc.c index b4db3b77..75af3211 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" @@ -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] ); @@ -410,7 +412,7 @@ Send_Message(CLIENT * Client, REQUEST * Req, int ForceType, bool SendErrors) if (nick != NULL && host != NULL) { if (strcmp(nick, Client_ID(cl)) == 0 && strcmp(user, Client_User(cl)) == 0 && - strcasecmp(host, Client_Hostname(cl)) == 0) + strcasecmp(host, Client_HostnameCloaked(cl)) == 0) break; else continue; @@ -418,7 +420,7 @@ Send_Message(CLIENT * Client, REQUEST * Req, int ForceType, bool SendErrors) if (strcasecmp(user, Client_User(cl)) != 0) continue; if (host != NULL && strcasecmp(host, - Client_Hostname(cl)) != 0) + Client_HostnameCloaked(cl)) != 0) continue; if (server != NULL && strcasecmp(server, Client_ID(Client_Introducer(cl))) != 0)