]> jfr.im git - irc/quakenet/newserv.git/commitdiff
You can requestowner if you are +k now.
authorsplidge <redacted>
Tue, 11 Mar 2008 17:53:33 +0000 (17:53 +0000)
committersplidge <redacted>
Tue, 11 Mar 2008 17:53:33 +0000 (17:53 +0000)
You can't have +t if you don't have one of +nmovk.

This leaves just channels with only +bdq users...

chanserv/chancmds/requestowner.c
chanserv/chanservuser.c

index 2744d6e42386b7ecad1a7f5761614cee75f4a1d5..394deb0d45e6259d43421c38bb3bbbf1608e452d 100644 (file)
@@ -41,7 +41,7 @@ int csc_dorequestowner(void *source, int cargc, char **cargv) {
     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);
@@ -57,7 +57,8 @@ int csc_dorequestowner(void *source, int cargc, char **cargv) {
     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;
       }
index 6da6ac5b161cad36598575c965555ccbe5766ec9..0445aec4f772c71f5bc37d89a4bc3b61e1a915dc 100644 (file)
@@ -1190,9 +1190,9 @@ flag_t cs_sanitisechanlev(flag_t flags) {
   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;
 }