Remove the subset ban restriction

I think this was always pretty questionable. You can set redundant bans
in various ways anyway, and preventing all of them would only make the
situation worse, as wide temporary bans would destroy narrow permanent
ones, for example.
This commit is contained in:
Ed Kellett 2022-04-01 14:26:47 +01:00
parent 492d560ee1
commit c2fdb023a9

View file

@ -249,9 +249,7 @@ add_id(struct Client *source_p, struct Channel *chptr, const char *banid, const
char *realban = LOCAL_COPY(banid); char *realban = LOCAL_COPY(banid);
rb_dlink_node *ptr; rb_dlink_node *ptr;
/* dont let local clients overflow the banlist, or set redundant /* dont let local clients overflow the banlist */
* bans
*/
if(MyClient(source_p)) if(MyClient(source_p))
{ {
if((rb_dlink_list_length(&chptr->banlist) + rb_dlink_list_length(&chptr->exceptlist) + rb_dlink_list_length(&chptr->invexlist) + rb_dlink_list_length(&chptr->quietlist)) >= (unsigned long)((chptr->mode.mode & MODE_EXLIMIT) ? ConfigChannel.max_bans_large : ConfigChannel.max_bans)) if((rb_dlink_list_length(&chptr->banlist) + rb_dlink_list_length(&chptr->exceptlist) + rb_dlink_list_length(&chptr->invexlist) + rb_dlink_list_length(&chptr->quietlist)) >= (unsigned long)((chptr->mode.mode & MODE_EXLIMIT) ? ConfigChannel.max_bans_large : ConfigChannel.max_bans))
@ -260,26 +258,16 @@ add_id(struct Client *source_p, struct Channel *chptr, const char *banid, const
me.name, source_p->name, chptr->chname, realban); me.name, source_p->name, chptr->chname, realban);
return false; return false;
} }
RB_DLINK_FOREACH(ptr, list->head)
{
actualBan = ptr->data;
if(mask_match(actualBan->banstr, realban))
return false;
}
} }
/* dont let remotes set duplicates */
else /* don't let anyone set duplicate bans */
RB_DLINK_FOREACH(ptr, list->head)
{ {
RB_DLINK_FOREACH(ptr, list->head) actualBan = ptr->data;
{ if(!irccmp(actualBan->banstr, realban))
actualBan = ptr->data; return false;
if(!irccmp(actualBan->banstr, realban))
return false;
}
} }
if(IsPerson(source_p)) if(IsPerson(source_p))
sprintf(who, "%s!%s@%s", source_p->name, source_p->username, source_p->host); sprintf(who, "%s!%s@%s", source_p->name, source_p->username, source_p->host);
else else