mirror of
https://github.com/osmarks/ngircd.git
synced 2025-01-19 03:52:52 +00:00
Fix "MAXLIST=beI:50": the limit is the sum of all lists
"Modes which are specified in the same pair share the same maximum size", so "beI:50" means a total of 50 entries, regardless of the list. See <http://www.irc.org/tech_docs/draft-brocklesby-irc-isupport-03.txt>, thanks to Cahata for reporting this!
This commit is contained in:
parent
8c46067b34
commit
b6f19ea8fe
@ -857,6 +857,7 @@ Add_To_List(char what, CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel,
|
||||
{
|
||||
const char *mask;
|
||||
struct list_head *list;
|
||||
long int current_count;
|
||||
|
||||
assert(Client != NULL);
|
||||
assert(Channel != NULL);
|
||||
@ -864,6 +865,9 @@ Add_To_List(char what, CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel,
|
||||
assert(what == 'I' || what == 'b' || what == 'e');
|
||||
|
||||
mask = Lists_MakeMask(Pattern);
|
||||
current_count = Lists_Count(Channel_GetListInvites(Channel))
|
||||
+ Lists_Count(Channel_GetListExcepts(Channel))
|
||||
+ Lists_Count(Channel_GetListBans(Channel));
|
||||
|
||||
switch(what) {
|
||||
case 'I':
|
||||
@ -880,7 +884,7 @@ Add_To_List(char what, CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel,
|
||||
if (Lists_CheckDupeMask(list, mask))
|
||||
return CONNECTED;
|
||||
if (Client_Type(Client) == CLIENT_USER &&
|
||||
Lists_Count(list) >= MAX_HNDL_CHANNEL_LISTS)
|
||||
current_count >= MAX_HNDL_CHANNEL_LISTS)
|
||||
return IRC_WriteStrClient(Client, ERR_LISTFULL_MSG,
|
||||
Client_ID(Client),
|
||||
Channel_Name(Channel), mask,
|
||||
|
Loading…
Reference in New Issue
Block a user