mirror of
				https://github.com/osmarks/ngircd.git
				synced 2025-10-31 05:52: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
	 Alexander Barton
					Alexander Barton