repo: ngircd action: commit revision: path_from: revision_from: 77861f6fe24a7a6be85c6f8112f08172ad7ffa67: path_to: revision_to:
commit 77861f6fe24a7a6be85c6f8112f08172ad7ffa67 Author: Alexander BartonDate: Thu Dec 8 01:01:40 2016 +0100 Immediately shut down connection on receiving ERROR 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. diff --git a/src/ngircd/irc.c b/src/ngircd/irc.c
--- a/src/ngircd/irc.c
+++ b/src/ngircd/irc.c
@@ -85,6 +85,8 @@ IRC_CheckListTooBig(CLIENT *From, const int Count, const int Limit,
GLOBAL bool
IRC_ERROR(CLIENT *Client, REQUEST *Req)
{
+ char *msg;
+
assert( Client != NULL );
assert( Req != NULL );
@@ -99,12 +101,20 @@ IRC_ERROR(CLIENT *Client, REQUEST *Req)
return CONNECTED;
}
- if (Req->argc < 1)
+ if (Req->argc < 1) {
+ msg = "Got ERROR command";
Log(LOG_NOTICE, "Got ERROR from \"%s\"!",
Client_Mask(Client));
- else
+ } else {
+ msg = Req->argv[0];
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 */
-----END OF PAGE-----