Don't wait for the peer to close the connection. This allows us to
forward the ERROR mesage in the network, instead of the very generic
"client closed connection" message.
GLOBAL bool
IRC_ERROR(CLIENT *Client, REQUEST *Req)
{
GLOBAL bool
IRC_ERROR(CLIENT *Client, REQUEST *Req)
{
assert( Client != NULL );
assert( Req != NULL );
assert( Client != NULL );
assert( Req != NULL );
+ if (Req->argc < 1) {
+ msg = "Got ERROR command";
Log(LOG_NOTICE, "Got ERROR from \"%s\"!",
Client_Mask(Client));
Log(LOG_NOTICE, "Got ERROR from \"%s\"!",
Client_Mask(Client));
+ } else {
+ msg = Req->argv[0];
Log(LOG_NOTICE, "Got ERROR from \"%s\": \"%s\"!",
Log(LOG_NOTICE, "Got ERROR from \"%s\": \"%s\"!",
- Client_Mask(Client), Req->argv[0]);
+ Client_Mask(Client), msg);
+ }
+
+ if (Client_Conn(Client) != NONE) {
+ Client_Destroy(Client, NULL, msg, false);
+ return DISCONNECTED;
+ }
return CONNECTED;
} /* IRC_ERROR */
return CONNECTED;
} /* IRC_ERROR */