Module: ngircd.git Branch: master Commit: 3bd973037a1664387161a465f801b78ff0180fa1 URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=3bd97...
Author: Alexander Barton alex@barton.de Date: Tue Jul 30 22:05:00 2013 +0200
Add more penalty times in error paths
This patch changes the handlers of the "PASS", "NICK", "USER", and "SERVICE" commands to enforce a 2 second penalty when an error like "need more/other parameters" occurs.
More functions should follow, I think ...
---
src/ngircd/irc-login.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/ngircd/irc-login.c b/src/ngircd/irc-login.c index 27e11c4..cfb94f6 100644 --- a/src/ngircd/irc-login.c +++ b/src/ngircd/irc-login.c @@ -81,10 +81,12 @@ IRC_PASS( CLIENT *Client, REQUEST *Req ) } else if (Client_Type(Client) == CLIENT_UNKNOWN || Client_Type(Client) == CLIENT_UNKNOWNSERVER) { /* Unregistered connection, but wrong number of arguments: */ + IRC_SetPenalty(Client, 2); return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG, Client_ID(Client), Req->command); } else { /* Registered connection, PASS command is not allowed! */ + IRC_SetPenalty(Client, 2); return IRC_WriteStrClient(Client, ERR_ALREADYREGISTRED_MSG, Client_ID(Client)); } @@ -207,11 +209,12 @@ IRC_NICK( CLIENT *Client, REQUEST *Req ) Req->argv[0] ); } else { /* Is this a restricted client? */ - if( Client_HasMode( Client, 'r' )) + if (Client_HasMode(Client, 'r')) { + IRC_SetPenalty(Client, 2); return IRC_WriteStrClient( Client, ERR_RESTRICTED_MSG, Client_ID( Client )); - + } target = Client; }
@@ -487,10 +490,12 @@ IRC_USER(CLIENT * Client, REQUEST * Req) return CONNECTED; } else if (Client_Type(Client) == CLIENT_USER) { /* Already registered connection */ + IRC_SetPenalty(Client, 2); return IRC_WriteStrClient(Client, ERR_ALREADYREGISTRED_MSG, Client_ID(Client)); } else { /* Unexpected/invalid connection state? */ + IRC_SetPenalty(Client, 2); return IRC_WriteStrClient(Client, ERR_NOTREGISTERED_MSG, Client_ID(Client)); } @@ -518,9 +523,11 @@ IRC_SERVICE(CLIENT *Client, REQUEST *Req) assert(Req != NULL);
if (Client_Type(Client) != CLIENT_GOTPASS && - Client_Type(Client) != CLIENT_SERVER) + Client_Type(Client) != CLIENT_SERVER) { + IRC_SetPenalty(Client, 2); return IRC_WriteStrClient(Client, ERR_ALREADYREGISTRED_MSG, Client_ID(Client)); + }
_IRC_ARGC_EQ_OR_RETURN_(Client, Req, 6)