]> jfr.im git - irc/quakenet/snircd-patchqueue.git/blame - ischannelservice.patch
rename patch files
[irc/quakenet/snircd-patchqueue.git] / ischannelservice.patch
CommitLineData
c8fc5f4b 1Added new define in include/client.h
2IsRealChannelService() - client has usermode +k and is on a services server (+s flag)
3
4Function ms_invite did not return an error when the source was a channel service,
5that should only be for a real channel service.
6
78da476d 7diff -r 48ace0dc0261 include/client.h
8--- a/include/client.h Wed Mar 17 14:34:56 2010 +0100
9+++ b/include/client.h Wed Mar 17 14:50:51 2010 +0100
c8fc5f4b 10@@ -568,6 +568,8 @@
11 #define IsBurstOrBurstAck(x) (HasFlag(x, FLAG_BURST) || HasFlag(x, FLAG_BURST_ACK))
12 /** Return non-zero if the client has set mode +k (channel service). */
13 #define IsChannelService(x) HasFlag(x, FLAG_CHSERV)
14+/** Return non-zero if the client has set mode +k (channel service) and is on a service server */
15+#define IsRealChannelService(x) (IsChannelService(x) && IsService(cli_user(x)->server))
16 /** Return non-zero if the client's socket is disconnected. */
17 #define IsDead(x) HasFlag(x, FLAG_DEADSOCKET)
18 /** Return non-zero if the client has set mode +d (deaf). */
78da476d 19diff -r 48ace0dc0261 ircd/channel.c
20--- a/ircd/channel.c Wed Mar 17 14:34:56 2010 +0100
21+++ b/ircd/channel.c Wed Mar 17 14:50:51 2010 +0100
c8fc5f4b 22@@ -180,7 +180,7 @@
23 * however there are typically no more than 1000 people in a channel
24 * at a time.
25 */
26- if (IsChannelService(cptr)) {
27+ if (IsRealChannelService(cptr)) {
28 m = chptr->members;
29 while (m) {
30 assert(m->channel == chptr);
78da476d 31@@ -3176,7 +3176,7 @@
c8fc5f4b 32 * Allow +X'ed users to mess with +k'ed.
33 * --Bigfoot
34 */
35- if ((IsChannelService(state->cli_change[i].client) && IsService(cli_user(state->cli_change[i].client)->server)) || (IsChannelService(state->cli_change[i].client) && !IsXtraOp(state->sptr))) {
36+ if ((IsRealChannelService(state->cli_change[i].client)) || (IsChannelService(state->cli_change[i].client) && !IsXtraOp(state->sptr))) {
37 if (state->flags & MODE_PARSE_FORCE) /* it was forced */
38 sendto_opmask_butone(0, SNO_HACK4, "Deop of +k user on %H by %s",
39 state->chptr,
78da476d 40@@ -3184,7 +3184,7 @@
c8fc5f4b 41 cli_name((cli_user(state->sptr))->server)));
42
43 else if (MyUser(state->sptr) && state->flags & MODE_PARSE_SET && (state->sptr != state->cli_change[i].client)) {
44- if(IsService(cli_user(state->cli_change[i].client)->server) && IsChannelService(state->cli_change[i].client)){
45+ if(IsRealChannelService(state->cli_change[i].client)){
46 send_reply(state->sptr, ERR_ISREALSERVICE,
47 cli_name(state->cli_change[i].client),
48 state->chptr->chname);
78da476d 49@@ -3641,7 +3641,7 @@
50 if (!(flags & (CHFL_ZOMBIE | CHFL_DELAYED)))
51 sendcmdto_channel_butserv_butone(jbuf->jb_source, CMD_PART, chan, NULL, 0,
52 ((flags & CHFL_BANNED) || ((chan->mode.mode & MODE_NOQUITPARTS)
53- && !IsChannelService(member->user)) || !jbuf->jb_comment) ?
54+ && !IsRealChannelService(member->user)) || !jbuf->jb_comment) ?
55 "%H" : "%H :%s", chan, jbuf->jb_comment);
56 else if (MyUser(jbuf->jb_source))
57 sendcmdto_one(jbuf->jb_source, CMD_PART, jbuf->jb_source,
58diff -r 48ace0dc0261 ircd/ircd_relay.c
59--- a/ircd/ircd_relay.c Wed Mar 17 14:34:56 2010 +0100
60+++ b/ircd/ircd_relay.c Wed Mar 17 14:50:51 2010 +0100
61@@ -205,7 +205,7 @@
62 * This first: Almost never a server/service
63 * Servers may have channel services, need to check for it here
64 */
65- if (client_can_send_to_channel(sptr, chptr, 1) || IsChannelService(sptr)) {
66+ if (client_can_send_to_channel(sptr, chptr, 1) || IsRealChannelService(sptr)) {
67 sendcmdto_channel_butone(sptr, CMD_PRIVATE, chptr, cli_from(sptr),
68 SKIP_DEAF | SKIP_BURST, "%H :%s", chptr, text);
69 }
70@@ -233,7 +233,7 @@
71 * This first: Almost never a server/service
72 * Servers may have channel services, need to check for it here
73 */
74- if (client_can_send_to_channel(sptr, chptr, 1) || IsChannelService(sptr)) {
75+ if (client_can_send_to_channel(sptr, chptr, 1) || IsRealChannelService(sptr)) {
76 sendcmdto_channel_butone(sptr, CMD_NOTICE, chptr, cli_from(sptr),
77 SKIP_DEAF | SKIP_BURST, "%H :%s", chptr, text);
78 }
79@@ -290,7 +290,7 @@
80 */
81 if (!(acptr = FindUser(name)) || !MyUser(acptr) ||
82 (!EmptyString(host) && 0 != match(host, cli_user(acptr)->host)) ||
83- !IsChannelService(acptr))
84+ !IsRealChannelService(acptr))
85 {
86 /*
87 * By this stage we might as well not bother because they will
88@@ -385,7 +385,7 @@
89 send_reply(sptr, ERR_NOSUCHNICK, name);
90 return;
91 }
92- if ((!IsChannelService(acptr) &&
93+ if ((!IsRealChannelService(acptr) &&
94 check_target_limit(sptr, acptr, cli_name(acptr), 0)) ||
95 is_silenced(sptr, acptr))
96 return;
97@@ -431,7 +431,7 @@
98
99 if (0 == (acptr = FindUser(name)))
100 return;
101- if ((!IsChannelService(acptr) &&
102+ if ((!IsRealChannelService(acptr) &&
103 check_target_limit(sptr, acptr, cli_name(acptr), 0)) ||
104 is_silenced(sptr, acptr))
105 return;
106diff -r 48ace0dc0261 ircd/m_invite.c
107--- a/ircd/m_invite.c Wed Mar 17 14:34:56 2010 +0100
108+++ b/ircd/m_invite.c Wed Mar 17 14:50:51 2010 +0100
c8fc5f4b 109@@ -271,7 +271,7 @@
110 } else if (IsBurstOrBurstAck(cptr))
111 return 0;
112
113- if (!IsChannelService(sptr) && !find_channel_member(sptr, chptr)) {
114+ if (!IsRealChannelService(sptr) && !find_channel_member(sptr, chptr)) {
115 send_reply(sptr, ERR_NOTONCHANNEL, chptr->chname);
116 return 0;
117 }
78da476d 118diff -r 48ace0dc0261 ircd/m_kick.c
119--- a/ircd/m_kick.c Wed Mar 17 14:34:56 2010 +0100
120+++ b/ircd/m_kick.c Wed Mar 17 14:50:51 2010 +0100
c8fc5f4b 121@@ -136,17 +136,14 @@
122 * Allow +X'ed users to kick +k'ed, but not U-lined services.
123 * --Bigfoot
124 */
125- if (IsChannelService(who)) {
126- if (IsService(cli_user(who)->server))
127- return send_reply(sptr, ERR_ISREALSERVICE, cli_name(who), chptr->chname);
128+ if (IsRealChannelService(who))
129+ return send_reply(sptr, ERR_ISREALSERVICE, cli_name(who), chptr->chname);
130
131- if (!IsXtraOp(sptr) && (who!=sptr)) {
132- /* the victim is paranoid AND on the channel but not a zombie - wiebe */
133- if (IsParanoid(who) && (member = find_member_link(chptr, who)) && !IsZombie(member)) {
134- sendcmdto_one(&me, CMD_NOTICE, who, "%C :kick: %s tried to /KICK you from %s.", who, cli_name(sptr), chptr->chname);
135- }
136- return send_reply(sptr, ERR_ISCHANSERVICE, cli_name(who), chptr->chname);
137- }
138+ if (IsChannelService(who) && !IsXtraOp(sptr) && (who!=sptr)) {
139+ /* the victim is paranoid AND on the channel but not a zombie */
140+ if (IsParanoid(who) && (member = find_member_link(chptr, who)) && !IsZombie(member))
141+ sendcmdto_one(&me, CMD_NOTICE, who, "%C :kick: %s tried to /KICK you from %s.", who, cli_name(sptr), chptr->chname);
142+ return send_reply(sptr, ERR_ISCHANSERVICE, cli_name(who), chptr->chname);
143 }
144
145 /* Prevent kicking opers from local channels -DM- */
78da476d 146diff -r 48ace0dc0261 ircd/m_kill.c
147--- a/ircd/m_kill.c Wed Mar 17 14:34:56 2010 +0100
148+++ b/ircd/m_kill.c Wed Mar 17 14:50:51 2010 +0100
c8fc5f4b 149@@ -293,7 +293,7 @@
150 * Allow +X'ed users to kill +k'ed, but not U-lined services.
151 * --Bigfoot
152 */
153- if (IsChannelService(victim) && IsService(cli_user(victim)->server))
154+ if (IsRealChannelService(victim))
155 return send_reply(sptr, ERR_ISREALSERVICE, "KILL", cli_name(victim));
156
157 if (IsChannelService(victim) && !IsXtraOp(sptr) && !(victim==sptr))
78da476d 158diff -r 48ace0dc0261 ircd/m_silence.c
159--- a/ircd/m_silence.c Wed Mar 17 14:34:56 2010 +0100
160+++ b/ircd/m_silence.c Wed Mar 17 14:50:51 2010 +0100
161@@ -289,7 +289,7 @@
162 /* See if the user is requesting a silence list. */
163 acptr = sptr;
164 if (parc < 2 || EmptyString(parv[1]) || (acptr = FindUser(parv[1]))) {
165- if (cli_user(acptr) && ((acptr == sptr) || IsChannelService(acptr))) {
166+ if (cli_user(acptr) && ((acptr == sptr) || IsRealChannelService(acptr))) {
167 for (sile = cli_user(acptr)->silence; sile; sile = sile->next) {
168 send_reply(sptr, RPL_SILELIST, cli_name(acptr),
169 (sile->flags & BAN_EXCEPTION ? "~" : ""), sile->banstr);