From 02b2a4ebcbd2eb71f7abaad36da2dc489c7c2d7c Mon Sep 17 00:00:00 2001 From: Russell King Date: Sun, 5 Jun 2016 14:16:36 +0100 Subject: Add global channel operator support --- modules/core/m_kick.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'modules/core') diff --git a/modules/core/m_kick.c b/modules/core/m_kick.c index 2c88f15..1b15c4d 100644 --- a/modules/core/m_kick.c +++ b/modules/core/m_kick.c @@ -97,7 +97,7 @@ m_kick(struct Client *client_p, struct Client *source_p, } } - if (!has_member_flags(ms_source, CHFL_CHANOP|CHFL_HALFOP)) + if (!has_member_flags(ms_source, CHFL_CHANOP|CHFL_HALFOP) && !HasUMode(source_p, UMODE_GCHANOP)) { /* was a user, not a server, and user isn't seen as a chanop here */ if (MyConnect(source_p)) @@ -145,9 +145,10 @@ m_kick(struct Client *client_p, struct Client *source_p, if ((ms_target = find_channel_link(target_p, chptr)) != NULL) { #ifdef HALFOPS - if (has_member_flags(ms_source, CHFL_HALFOP) && !has_member_flags(ms_source, CHFL_CHANOP)) + /* half ops cannot kick other halfops on private channels */ + if (has_member_flags(ms_source, CHFL_HALFOP) && !has_member_flags(ms_source, CHFL_CHANOP) && !HasUMode(source_p, UMODE_GCHANOP)) { - if (has_member_flags(ms_target, CHFL_CHANOP|CHFL_HALFOP)) + if (has_member_flags(ms_target, CHFL_CHANOP|CHFL_HALFOP) || HasUMode(target_p, UMODE_GCHANOP)) { sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED), me.name, source_p->name, chptr->chname); -- cgit