X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fngircd%2Firc.c;h=f6eda971f997a818e0621563061203ddee836a75;hb=0f3e84f4154676dc05a09bd0b1ad9d3d43574d48;hp=bd44f4674074f25c0c0ba66bf1d920c75bf12c96;hpb=b8d7dcec7739aab840fc1ccae8e4dfaa8db330a1;p=ngircd-alex.git diff --git a/src/ngircd/irc.c b/src/ngircd/irc.c index bd44f467..f6eda971 100644 --- a/src/ngircd/irc.c +++ b/src/ngircd/irc.c @@ -14,7 +14,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: irc.c,v 1.113 2002/12/30 17:15:42 alex Exp $"; +static char UNUSED id[] = "$Id: irc.c,v 1.116 2003/01/08 22:27:13 alex Exp $"; #include "imp.h" #include @@ -52,7 +52,7 @@ IRC_KILL( CLIENT *Client, REQUEST *Req ) { CLIENT *prefix, *c; CHAR reason[COMMAND_LEN]; - CONN_ID conn; + CONN_ID my_conn, conn; assert( Client != NULL ); assert( Req != NULL ); @@ -71,7 +71,7 @@ IRC_KILL( CLIENT *Client, REQUEST *Req ) prefix = Client_ThisServer( ); } - Log( LOG_NOTICE|LOG_snotice, "Got KILL command from \"%s\" for \"%s\": %s", Client_Mask( prefix ), Req->argv[0], Req->argv[1] ); + if( Client != Client_ThisServer( )) Log( LOG_NOTICE|LOG_snotice, "Got KILL command from \"%s\" for \"%s\": %s", Client_Mask( prefix ), Req->argv[0], Req->argv[1] ); /* Build reason string */ if( Client_Type( Client ) == CLIENT_USER ) snprintf( reason, sizeof( reason ), "KILLed by %s: %s", Client_ID( Client ), Req->argv[1] ); @@ -80,6 +80,9 @@ IRC_KILL( CLIENT *Client, REQUEST *Req ) /* Inform other servers */ IRC_WriteStrServersPrefix( Client, prefix, "KILL %s :%s", Req->argv[0], reason ); + /* Save ID of this connection */ + my_conn = Client_Conn( Client ); + /* Do we host such a client? */ c = Client_Search( Req->argv[0] ); if( c ) @@ -92,13 +95,13 @@ IRC_KILL( CLIENT *Client, REQUEST *Req ) /* Kill user NOW! */ conn = Client_Conn( c ); Client_Destroy( c, NULL, reason, FALSE ); - if( conn != NONE ) Conn_Close( Client_Conn( c ), NULL, reason, TRUE ); + if( conn != NONE ) Conn_Close( conn, NULL, reason, TRUE ); } } else Log( LOG_NOTICE, "Client with nick \"%s\" is unknown here.", Req->argv[0] ); /* Are we still connected or were we killed, too? */ - if( Client_Search( Req->argv[0] )) return CONNECTED; + if(( my_conn > NONE ) && ( Client_GetFromConn( my_conn ))) return CONNECTED; else return DISCONNECTED; } /* IRC_KILL */