1 check IsAnOper() (local or global) instead of IsOper() (global)
3 diff -r bcdbf3b717a7 ircd/s_user.c
6 @@ -1435,15 +1435,15 @@
7 * new umode; servers can set it, local users cannot;
8 * prevents users from /kick'ing or /mode -o'ing
10 - if (!FlagHas(&setflags, FLAG_CHSERV) && !(IsOper(sptr) && HasPriv(sptr, PRIV_CHANSERV)))
11 + if (!FlagHas(&setflags, FLAG_CHSERV) && !(IsAnOper(sptr) && HasPriv(sptr, PRIV_CHANSERV)))
12 ClearChannelService(sptr);
13 - if (!FlagHas(&setflags, FLAG_XTRAOP) && !(IsOper(sptr) && HasPriv(sptr, PRIV_XTRA_OPER)))
14 + if (!FlagHas(&setflags, FLAG_XTRAOP) && !(IsAnOper(sptr) && HasPriv(sptr, PRIV_XTRA_OPER)))
16 - if (!FlagHas(&setflags, FLAG_NOCHAN) && !(IsOper(sptr) || feature_bool(FEAT_USER_HIDECHANS)))
17 + if (!FlagHas(&setflags, FLAG_NOCHAN) && !(IsAnOper(sptr) || feature_bool(FEAT_USER_HIDECHANS)))
19 - if (!FlagHas(&setflags, FLAG_NOIDLE) && !((IsOper(sptr) && HasPriv(sptr, PRIV_NOIDLE)) || feature_bool(FEAT_USER_HIDEIDLETIME)))
20 + if (!FlagHas(&setflags, FLAG_NOIDLE) && !((IsAnOper(sptr) && HasPriv(sptr, PRIV_NOIDLE)) || feature_bool(FEAT_USER_HIDEIDLETIME)))
22 - if (!FlagHas(&setflags, FLAG_PARANOID) && !(IsOper(sptr) && HasPriv(sptr, PRIV_PARANOID)))
23 + if (!FlagHas(&setflags, FLAG_PARANOID) && !(IsAnOper(sptr) && HasPriv(sptr, PRIV_PARANOID)))
26 /* disallow ordinary users to do MODE -i when feature AUTOINVISIBLE is enabled */