X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fngircd%2Firc.c;h=8dd9bf74f2897b954c337a1f028cdecbf1cdb64f;hb=49b2d0ec98d001fbc8eedd5a183d66974f70fd52;hp=2466b6bf9e47ef9ed7c084fe0a2af93a6570cf0f;hpb=2c1b6280fac393c8977df03d94cc6a1dcf2a5f5d;p=ngircd-alex.git diff --git a/src/ngircd/irc.c b/src/ngircd/irc.c index 2466b6bf..8dd9bf74 100644 --- a/src/ngircd/irc.c +++ b/src/ngircd/irc.c @@ -7,14 +7,14 @@ * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * Please read the file COPYING, README and AUTHORS for more information. - * - * IRC commands */ - #include "portab.h" -static char UNUSED id[] = "$Id: irc.c,v 1.132 2008/01/15 22:28:14 fw Exp $"; +/** + * @file + * IRC commands + */ #include "imp.h" #include @@ -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" @@ -53,8 +51,12 @@ IRC_ERROR( CLIENT *Client, REQUEST *Req ) assert( Client != NULL ); assert( Req != NULL ); - if( Req->argc < 1 ) Log( LOG_NOTICE, "Got ERROR from \"%s\"!", Client_Mask( Client )); - else Log( LOG_NOTICE, "Got ERROR from \"%s\": %s!", Client_Mask( Client ), Req->argv[0] ); + if (Req->argc < 1) + Log(LOG_NOTICE, "Got ERROR from \"%s\"!", + Client_Mask(Client)); + else + Log(LOG_NOTICE, "Got ERROR from \"%s\": \"%s\"!", + Client_Mask(Client), Req->argv[0]); return CONNECTED; } /* IRC_ERROR */ @@ -66,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 ) @@ -156,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] ); @@ -406,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; @@ -414,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)