#include <string.h>
#include "ngircd.h"
-#include "resolve.h"
#include "conn-func.h"
#include "conf.h"
#include "client.h"
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 */
* 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 )
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] );
* RFC 2812, sec. 3.3.1 requires that targetMask have at least one
* dot (".") and no wildcards ("*", "?") following the last one.
*/
- check_wildcards = strchr(targetMask, '.');
+ check_wildcards = strrchr(targetMask, '.');
assert(check_wildcards != NULL);
if (check_wildcards &&
check_wildcards[strcspn(check_wildcards, "*?")])