Use SetOpLevel() to set oplevels; give oplevel 1 when op are hacked.
authorMichael Poole <mdpoole@troilus.org>
Sat, 27 Aug 2005 14:20:41 +0000 (14:20 +0000)
committerMichael Poole <mdpoole@troilus.org>
Sat, 27 Aug 2005 14:20:41 +0000 (14:20 +0000)
git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/trunk@1469 c9e4aea6-c8fd-4c43-8297-357d70d61c8c

ChangeLog
ircd/channel.c
ircd/m_burst.c

index 010416b467988505b3c160b0d759d0b54ae1f616..07ae22b092626f5044be9c188baba21c569bc117 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2005-08-27  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/channel.c (add_user_to_channel): Use SetOpLevel() instead
+       of assigning directly to member->oplevel.
+       (mode_parse_apass): Likewise.
+       (mode_process_clients): Users opped by outsiders should get
+       oplevel 1, since they are not channel managers.
+
+       * ircd/m_burst.c (ms_burst): Use SetOpLevel() instead of assigning
+       directly to member->oplevel.
+
 2005-08-25  Michael Poole <mdpoole@troilus.org>
 
        * ircd/channel.c (member_can_send_to_channel): At coekie's
index 4d99df794f0969b78505db561bcb4b29e9bb5241..b2007f84d4e8c4c58674b482244d5c9f228b430d 100644 (file)
@@ -447,7 +447,7 @@ void add_user_to_channel(struct Channel* chptr, struct Client* who,
     member->user         = who;
     member->channel      = chptr;
     member->status       = flags;
-    member->oplevel      = oplevel;
+    SetOpLevel(member, oplevel);
 
     member->next_member  = chptr->members;
     if (member->next_member)
@@ -2663,7 +2663,7 @@ mode_parse_apass(struct ParseState *state, int *flag_p)
       /* Revert everyone to MAXOPLEVEL. */
       for (memb = state->chptr->members; memb; memb = memb->next_member) {
         if (memb->status & MODE_CHANOP)
-          memb->oplevel = MAXOPLEVEL;
+          SetOpLevel(memb, MAXOPLEVEL);
       }
     }
   }
@@ -3045,14 +3045,14 @@ mode_process_clients(struct ParseState *state)
     /* set op-level of member being opped */
     if ((state->cli_change[i].flag & (MODE_ADD | MODE_CHANOP)) ==
        (MODE_ADD | MODE_CHANOP)) {
-      /* If being opped by an outsider, get oplevel 0 for an apass
+      /* If being opped by an outsider, get oplevel 1 for an apass
        *   channel, else MAXOPLEVEL.
        * Otherwise, if not an apass channel, or state->member has
        *   MAXOPLEVEL, get oplevel MAXOPLEVEL.
        * Otherwise, get state->member's oplevel+1.
        */
       if (!state->member)
-        SetOpLevel(member, state->chptr->mode.apass[0] ? 0 : MAXOPLEVEL);
+        SetOpLevel(member, state->chptr->mode.apass[0] ? 1 : MAXOPLEVEL);
       else if (!state->chptr->mode.apass[0] || OpLevel(state->member) == MAXOPLEVEL)
         SetOpLevel(member, MAXOPLEVEL);
       else
index 6cddc477c2015c66dbe65b68519863039539aa48..50c59b6da1a3c05d42883587c69f9145d35635d1 100644 (file)
@@ -498,7 +498,7 @@ int ms_burst(struct Client *cptr, struct Client *sptr, int parc, char *parv[])
              member->status |= CHFL_BURST_ALREADY_VOICED;
            /* Synchronize with the burst. */
            member->status |= CHFL_BURST_JOINED | (current_mode & (CHFL_CHANOP|CHFL_VOICE));
-           member->oplevel = oplevel;
+           SetOpLevel(member, oplevel);
          }
        }
       }