return CMD_ERROR;
}
- if (!(cip=cs_checkaccess(sender, cargv[0], CA_VOICEPRIV, NULL, "requestowner", 0, 0)))
+ if (!(cip=cs_checkaccess(sender, cargv[0], CA_KNOWN, NULL, "requestowner", 0, 0)))
return CMD_ERROR;
rup=getreguserfromnick(sender);
for(rcup=rcp->regusers[i];rcup;rcup=rcup->nextbychan) {
if (CUIsOwner(rcup) ||
(CUIsMaster(rcup) && !CUHasMasterPriv(requester)) ||
- (CUIsOp(rcup) && !CUHasOpPriv(requester))) {
+ (CUIsOp(rcup) && !CUHasOpPriv(requester)) ||
+ (CUIsVoice(rcup) && !CUHasVoicePriv(requester)) ) {
chanservstdmessage(sender, QM_NOREQUESTOWNER, cip->name->content, CUIsOwner(rcup)?"owner":CUIsMaster(rcup)?"master":"op");
return CMD_ERROR;
}
if (!(flags & (QCUFLAG_VOICE | QCUFLAG_OP)))
flags &= ~QCUFLAG_PROTECT;
- /* The personal flags require one of +mnovk */
+ /* The personal flags require one of +mnovk, as does +t */
if (!(flags & (QCUFLAG_OWNER | QCUFLAG_MASTER | QCUFLAG_OP | QCUFLAG_VOICE | QCUFLAG_KNOWN)))
- flags &= ~QCUFLAGS_PERSONAL;
+ flags &= ~(QCUFLAGS_PERSONAL | QCUFLAG_TOPIC);
return flags;
}