case QPRIV_CHANGEUSERFLAGS:
case QPRIV_VIEWSUSPENDEDBY:
case QPRIV_VIEWWALLMESSAGE: /* if you change VIEWWALLMESSAGE alter chanservwallmessage too */
+ case QPRIV_VIEWREALHOST:
return (np && rup && IsOper(np) && UHasOperPriv(rup));
default: /* By default opers can override anything */
if (!cs_privcheck(priv,np)) {
if ((flags & CA_VOICEPRIV) &&
- !(rcp && (CIsVoiceAll(rcp)) &&
+ !(rcp && CIsVoiceAll(rcp) && !(rcup && CUIsQuiet(rcup)) &&
!(cip->channel && (nickbanned(np, cip->channel, 1) || IsInviteOnly(cip->channel)))) &&
- !(rcup && (CUHasVoicePriv(rcup)))) {
+ !(rcup && CUHasVoicePriv(rcup))) {
if (!quiet) chanservstdmessage(np, QM_NOACCESSONCHAN, cip->name->content, cmdname);
return NULL;
}