Commit Diff
Diff:
8c46067b34b71dac23b388c0acc28fdf8db111fa
b6f19ea8feceeb2246995222f03790e6f00b0dfd
Commit:
b6f19ea8feceeb2246995222f03790e6f00b0dfd
Tree:
989c28389d5fa90e6bfc686b6ce6a280c3734f3b
Author:
Alexander Barton <alex@barton.de>
Committer:
Alexander Barton <alex@barton.de>
Date:
Mon Jan 23 20:51:38 2012 UTC
Message:
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 , thanks to Cahata for reporting this!
blob - ad83ae98a7aa93d0ee0931e5e6396de91cfa8d57
blob + 80b2949038b7cce6084537f771d21dd398f095a7
--- src/ngircd/irc-mode.c
+++ src/ngircd/irc-mode.c
@@ -857,6 +857,7 @@ Add_To_List(char what, CLIENT *Prefix, CLIENT *Client,
{
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,
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,
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,
IRCNow