X-Git-Url: http://git.pk910.de/?p=ircu2.10.12-pk.git;a=blobdiff_plain;f=ircd%2Fm_clearmode.c;h=26955743a3b84318bcf8e7456452172cd8a813c3;hp=4d0f17924ad13922f88ee67d461fa07a7abf21fc;hb=b8402b9ef585580454491088f9581a1c3a8ca8ef;hpb=13e67fb3455fe03d0102970788ff764a491df43c diff --git a/ircd/m_clearmode.c b/ircd/m_clearmode.c index 4d0f179..2695574 100644 --- a/ircd/m_clearmode.c +++ b/ircd/m_clearmode.c @@ -113,6 +113,7 @@ do_clearmode(struct Client *cptr, struct Client *sptr, struct Channel *chptr, static int flags[] = { MODE_CHANOP, 'o', MODE_VOICE, 'v', + MODE_HALFOP, 'h', MODE_PRIVATE, 'p', MODE_SECRET, 's', MODE_MODERATED, 'm', @@ -193,7 +194,7 @@ do_clearmode(struct Client *cptr, struct Client *sptr, struct Channel *chptr, } /* Deal with users on the channel */ - if (del_mode & (MODE_BAN | MODE_CHANOP | MODE_VOICE)) + if (del_mode & (MODE_BAN | MODE_CHANOP | MODE_HALFOP | MODE_VOICE)) for (member = chptr->members; member; member = member->next_member) { if (IsZombie(member)) /* we ignore zombies */ continue; @@ -206,6 +207,12 @@ do_clearmode(struct Client *cptr, struct Client *sptr, struct Channel *chptr, modebuf_mode_client(&mbuf, MODE_DEL | MODE_CHANOP, member->user, MAXOPLEVEL + 1); member->status &= ~CHFL_CHANOP; } + + /* Drop halfop */ + if (IsHalfOp(member) && del_mode & MODE_HALFOP) { + modebuf_mode_client(&mbuf, MODE_DEL | MODE_HALFOP, member->user, MAXOPLEVEL + 1); + member->status &= ~CHFL_HALFOP; + } /* Drop voice */ if (HasVoice(member) && del_mode & MODE_VOICE) {