|
@@ -449,7 +449,10 @@ static void priority_do(struct chanset_t * chan, bool opsonly, int action, bool
|
|
|
flush_mode(chan, QUICK);
|
|
flush_mode(chan, QUICK);
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
- } else if ((action == PRIO_KICK) && !chan_sentkick(m)) {
|
|
|
|
|
|
|
+ } else if ((action == PRIO_KICK) && !chan_sentkick(m) &&
|
|
|
|
|
+ // Check closed-exempt
|
|
|
|
|
+ !((chan_hasop(m) && chan->closed_exempt_mode == CHAN_FLAG_OP) ||
|
|
|
|
|
+ (chan_hasvoice(m) && chan->closed_exempt_mode == CHAN_FLAG_VOICE))) {
|
|
|
++actions;
|
|
++actions;
|
|
|
++sent;
|
|
++sent;
|
|
|
if (chan->closed_ban)
|
|
if (chan->closed_ban)
|
|
@@ -749,10 +752,6 @@ static void do_closed_kick(struct chanset_t *chan, memberlist *m)
|
|
|
|
|
|
|
|
simple_snprintf(s, sizeof(s), "%s!%s", m->nick, m->userhost);
|
|
simple_snprintf(s, sizeof(s), "%s!%s", m->nick, m->userhost);
|
|
|
|
|
|
|
|
- if ((m && chan->closed_exempt_mode == CHAN_FLAG_OP) ||
|
|
|
|
|
- (m && chan->closed_exempt_mode == CHAN_FLAG_VOICE))
|
|
|
|
|
- return;
|
|
|
|
|
-
|
|
|
|
|
if (!(use_exempts &&
|
|
if (!(use_exempts &&
|
|
|
(u_match_mask(global_exempts,s) ||
|
|
(u_match_mask(global_exempts,s) ||
|
|
|
u_match_mask(chan->exempts, s)))) {
|
|
u_match_mask(chan->exempts, s)))) {
|