repo: ngircd
action: commit
revision: 
path_from: 
revision_from: 3e47bc9af511716bbe388f0a29b5fdbb617cee4c:
path_to: 
revision_to: 
git.thebackupbox.net
ngircd
git clone git://git.thebackupbox.net/ngircd
commit 3e47bc9af511716bbe388f0a29b5fdbb617cee4c
Author: Alexander Barton 
Date:   Mon Dec 31 21:46:41 2012 +0100

    Allow ERROR command on server and service links only

    Ignore it and add a penalty time on all other link types.

diff --git a/src/ngircd/irc.c b/src/ngircd/irc.c
index 63c4813a361e6b464f6b3ae7699c7af70170403f..
index ..a678f9048e68d0c27b43d55533e333621d730543 100644
--- a/src/ngircd/irc.c
+++ b/src/ngircd/irc.c
@@ -81,6 +81,17 @@ IRC_ERROR( CLIENT *Client, REQUEST *Req )
 	assert( Client != NULL );
 	assert( Req != NULL );

+	if (Client_Type(Client) != CLIENT_GOTPASS
+	    && Client_Type(Client) != CLIENT_GOTPASS_2813
+	    && Client_Type(Client) != CLIENT_UNKNOWNSERVER
+	    && Client_Type(Client) != CLIENT_SERVER
+	    && Client_Type(Client) != CLIENT_SERVICE) {
+		LogDebug("Ignored ERROR command from \"%s\" ...",
+			 Client_Mask(Client));
+		IRC_SetPenalty(Client, 2);
+		return CONNECTED;
+	}
+
 	if (Req->argc < 1)
 		Log(LOG_NOTICE, "Got ERROR from \"%s\"!",
 		    Client_Mask(Client));

-----END OF PAGE-----