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:
parent
492d560ee1
commit
c2fdb023a9
1 changed files with 7 additions and 19 deletions
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue