]> jfr.im git - irc/quakenet/snircd-patchqueue.git/blame - serviceoplevels.patch
rename patch files
[irc/quakenet/snircd-patchqueue.git] / serviceoplevels.patch
CommitLineData
edb26b39
P
1# HG changeset patch
2# Parent 98171823d5d6a18c0dad624998d353d9f2a4f45f
3
4diff -r 98171823d5d6 include/channel.h
5--- a/include/channel.h Fri Jul 19 22:12:44 2013 +0100
6+++ b/include/channel.h Fri Jul 19 22:13:32 2013 +0100
7@@ -208,6 +208,7 @@
8
9 #define MAXOPLEVELDIGITS 3
10 #define MAXOPLEVEL 999
11+#define MINOPLEVEL 100 /* minimum oplevel that ordinary users can set */
12
13 #define IsZombie(x) ((x)->status & CHFL_ZOMBIE) /**< see \ref zombie */
14 #define IsDeopped(x) ((x)->status & CHFL_DEOPPED)
15diff -r 98171823d5d6 ircd/channel.c
16--- a/ircd/channel.c Fri Jul 19 22:12:44 2013 +0100
17+++ b/ircd/channel.c Fri Jul 19 22:13:32 2013 +0100
18@@ -3226,14 +3226,19 @@
19 * MAXOPLEVEL, get oplevel MAXOPLEVEL.
20 * Otherwise, get state->member's oplevel+1.
21 */
22- if (state->cli_change[i].oplevel <= MAXOPLEVEL)
23- SetOpLevel(member, state->cli_change[i].oplevel);
24+ if (state->cli_change[i].oplevel <= MAXOPLEVEL) {
25+ if ((IsChannelService(state->sptr) && IsService(cli_user(state->sptr)->server)) || (IsService(state->sptr))) {
26+ SetOpLevel(member, state->cli_change[i].oplevel);
27+ } else {
28+ SetOpLevel(member, state->cli_change[i].oplevel > MINOPLEVEL ? state->cli_change[i].oplevel : MINOPLEVEL);
29+ }
30+ }
31 else if (!state->member)
32 SetOpLevel(member, MAXOPLEVEL);
33 else if (OpLevel(state->member) >= MAXOPLEVEL)
34 SetOpLevel(member, OpLevel(state->member));
35 else
36- SetOpLevel(member, OpLevel(state->member) + 1);
37+ SetOpLevel(member, OpLevel(state->member) >= MINOPLEVEL ? OpLevel(state->member) + 1 : MINOPLEVEL);
38 }
39
40 /* actually effect the change */