mirror of
https://github.com/osmarks/ngircd.git
synced 2025-10-30 21:42:59 +00:00
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:
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* ngIRCd -- The Next Generation IRC Daemon
|
* 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
|
* 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
|
* 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));
|
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
|
GLOBAL bool
|
||||||
IRC_ERROR( CLIENT *Client, REQUEST *Req )
|
IRC_ERROR( CLIENT *Client, REQUEST *Req )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* ngIRCd -- The Next Generation IRC Daemon
|
* 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
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -17,6 +17,9 @@
|
|||||||
* IRC commands (header)
|
* 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_ERROR PARAMS((CLIENT *Client, REQUEST *Req));
|
||||||
GLOBAL bool IRC_KILL PARAMS((CLIENT *Client, REQUEST *Req));
|
GLOBAL bool IRC_KILL PARAMS((CLIENT *Client, REQUEST *Req));
|
||||||
GLOBAL bool IRC_NOTICE PARAMS((CLIENT *Client, REQUEST *Req));
|
GLOBAL bool IRC_NOTICE PARAMS((CLIENT *Client, REQUEST *Req));
|
||||||
|
|||||||
Reference in New Issue
Block a user