Commit Diff
Diff:
f494023b0d99be0e4b07701b983b71ecf4920465
3bd973037a1664387161a465f801b78ff0180fa1
Commit:
3bd973037a1664387161a465f801b78ff0180fa1
Tree:
1e250ca02ae634ed50277391e985a4e7e2dcdf6f
Author:
Alexander Barton <alex@barton.de>
Committer:
Alexander Barton <alex@barton.de>
Date:
Tue Jul 30 20:05:00 2013 UTC
Message:
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 ...
blob - 27e11c4032c96eeabc8adcf2461e1acc48dec639
blob + cfb94f60926f08b3dd9410e0d1f265958a52c9a9
--- src/ngircd/irc-login.c
+++ 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)
IRCNow