From 345d050fb6d69270d342fc79e8b9fdc5c58a3897 Mon Sep 17 00:00:00 2001 From: Michael Poole Date: Sat, 27 Aug 2005 14:20:41 +0000 Subject: [PATCH] Use SetOpLevel() to set oplevels; give oplevel 1 when op are hacked. git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/trunk@1469 c9e4aea6-c8fd-4c43-8297-357d70d61c8c --- ChangeLog | 11 +++++++++++ ircd/channel.c | 8 ++++---- ircd/m_burst.c | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 010416b..07ae22b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2005-08-27 Michael Poole + + * 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 * ircd/channel.c (member_can_send_to_channel): At coekie's diff --git a/ircd/channel.c b/ircd/channel.c index 4d99df7..b2007f8 100644 --- a/ircd/channel.c +++ b/ircd/channel.c @@ -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 diff --git a/ircd/m_burst.c b/ircd/m_burst.c index 6cddc47..50c59b6 100644 --- a/ircd/m_burst.c +++ b/ircd/m_burst.c @@ -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); } } } -- 2.20.1