New function IRC_CheckListTooBig() to check size of list replies
It the limit is reached, a NOTICE is sent to the client and list processing should stop.
This commit is contained in:
parent
fdfc27265e
commit
f8405b1a4f
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2004 Alexander Barton <alex@barton.de>
|
||||
* Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -45,6 +45,35 @@ static bool Send_Message_Mask PARAMS((CLIENT *from, char *command,
|
|||
bool SendErrors));
|
||||
|
||||
|
||||
/**
|
||||
* Check if a list limit is reached and inform client accordingly.
|
||||
*
|
||||
* @param From The client.
|
||||
* @param Count Reply item count.
|
||||
* @param Limit Reply limit.
|
||||
* @param Name Name of the list.
|
||||
* @return true if list limit has been reached; false otherwise.
|
||||
*/
|
||||
GLOBAL bool
|
||||
IRC_CheckListTooBig(CLIENT *From, const int Count, const int Limit,
|
||||
const char *Name)
|
||||
{
|
||||
assert(From != NULL);
|
||||
assert(Count >= 0);
|
||||
assert(Limit > 0);
|
||||
assert(Name != NULL);
|
||||
|
||||
if (Count < Limit)
|
||||
return false;
|
||||
|
||||
(void)IRC_WriteStrClient(From,
|
||||
"NOTICE %s :%s list limit (%d) reached!",
|
||||
Client_ID(From), Name, Limit);
|
||||
IRC_SetPenalty(From, 2);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
GLOBAL bool
|
||||
IRC_ERROR( CLIENT *Client, REQUEST *Req )
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
|
||||
* Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -17,6 +17,9 @@
|
|||
* IRC commands (header)
|
||||
*/
|
||||
|
||||
GLOBAL bool IRC_CheckListTooBig PARAMS((CLIENT *From, const int Count,
|
||||
const int Limit, const char *Name));
|
||||
|
||||
GLOBAL bool IRC_ERROR PARAMS((CLIENT *Client, REQUEST *Req));
|
||||
GLOBAL bool IRC_KILL PARAMS((CLIENT *Client, REQUEST *Req));
|
||||
GLOBAL bool IRC_NOTICE PARAMS((CLIENT *Client, REQUEST *Req));
|
||||
|
|
Loading…
Reference in New Issue