1
0
mirror of https://github.com/osmarks/ngircd.git synced 2024-10-28 04:46:17 +00:00

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 ...
This commit is contained in:
Alexander Barton 2013-07-30 22:05:00 +02:00
parent f494023b0d
commit 3bd973037a

View File

@ -81,10 +81,12 @@ IRC_PASS( CLIENT *Client, REQUEST *Req )
} else if (Client_Type(Client) == CLIENT_UNKNOWN || } else if (Client_Type(Client) == CLIENT_UNKNOWN ||
Client_Type(Client) == CLIENT_UNKNOWNSERVER) { Client_Type(Client) == CLIENT_UNKNOWNSERVER) {
/* Unregistered connection, but wrong number of arguments: */ /* Unregistered connection, but wrong number of arguments: */
IRC_SetPenalty(Client, 2);
return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG, return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Req->command); Client_ID(Client), Req->command);
} else { } else {
/* Registered connection, PASS command is not allowed! */ /* Registered connection, PASS command is not allowed! */
IRC_SetPenalty(Client, 2);
return IRC_WriteStrClient(Client, ERR_ALREADYREGISTRED_MSG, return IRC_WriteStrClient(Client, ERR_ALREADYREGISTRED_MSG,
Client_ID(Client)); Client_ID(Client));
} }
@ -207,11 +209,12 @@ IRC_NICK( CLIENT *Client, REQUEST *Req )
Req->argv[0] ); Req->argv[0] );
} else { } else {
/* Is this a restricted client? */ /* Is this a restricted client? */
if( Client_HasMode( Client, 'r' )) if (Client_HasMode(Client, 'r')) {
IRC_SetPenalty(Client, 2);
return IRC_WriteStrClient( Client, return IRC_WriteStrClient( Client,
ERR_RESTRICTED_MSG, ERR_RESTRICTED_MSG,
Client_ID( Client )); Client_ID( Client ));
}
target = Client; target = Client;
} }
@ -487,10 +490,12 @@ IRC_USER(CLIENT * Client, REQUEST * Req)
return CONNECTED; return CONNECTED;
} else if (Client_Type(Client) == CLIENT_USER) { } else if (Client_Type(Client) == CLIENT_USER) {
/* Already registered connection */ /* Already registered connection */
IRC_SetPenalty(Client, 2);
return IRC_WriteStrClient(Client, ERR_ALREADYREGISTRED_MSG, return IRC_WriteStrClient(Client, ERR_ALREADYREGISTRED_MSG,
Client_ID(Client)); Client_ID(Client));
} else { } else {
/* Unexpected/invalid connection state? */ /* Unexpected/invalid connection state? */
IRC_SetPenalty(Client, 2);
return IRC_WriteStrClient(Client, ERR_NOTREGISTERED_MSG, return IRC_WriteStrClient(Client, ERR_NOTREGISTERED_MSG,
Client_ID(Client)); Client_ID(Client));
} }
@ -518,9 +523,11 @@ IRC_SERVICE(CLIENT *Client, REQUEST *Req)
assert(Req != NULL); assert(Req != NULL);
if (Client_Type(Client) != CLIENT_GOTPASS && 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, return IRC_WriteStrClient(Client, ERR_ALREADYREGISTRED_MSG,
Client_ID(Client)); Client_ID(Client));
}
_IRC_ARGC_EQ_OR_RETURN_(Client, Req, 6) _IRC_ARGC_EQ_OR_RETURN_(Client, Req, 6)