+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
member->user = who;
member->channel = chptr;
member->status = flags;
- member->oplevel = oplevel;
+ SetOpLevel(member, oplevel);
member->next_member = chptr->members;
if (member->next_member)
/* 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);
}
}
}
/* 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
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);
}
}
}