From e5c254d7d1c52a03ca708363cf96bea7a3f64b9b Mon Sep 17 00:00:00 2001 From: Jilles Tjoelker Date: Fri, 25 Oct 2013 17:49:58 +0200 Subject: [PATCH] override: Remove umode +p when deopering. --- extensions/override.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/extensions/override.c b/extensions/override.c index bd31590dd..1b9ef208e 100644 --- a/extensions/override.c +++ b/extensions/override.c @@ -107,19 +107,22 @@ check_umode_change(void *vdata) if (!MyClient(source_p)) return; + if (data->oldumodes & UMODE_OPER && !IsOper(source_p)) + source_p->umodes &= ~user_modes['p']; + /* didn't change +p umode, we don't need to do anything */ if (!((data->oldumodes ^ source_p->umodes) & user_modes['p'])) return; - if (!IsOperOverride(source_p)) - { - sendto_one_notice(source_p, ":*** You need oper:override privilege for +p"); - source_p->umodes &= ~user_modes['p']; - return; - } - if (source_p->umodes & user_modes['p']) { + if (!IsOperOverride(source_p)) + { + sendto_one_notice(source_p, ":*** You need oper:override privilege for +p"); + source_p->umodes &= ~user_modes['p']; + return; + } + update_session_deadline(source_p, NULL); sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "%s has enabled oper-override (+p)",