]> jfr.im git - irc/quakenet/snircd-patchqueue.git/commitdiff
add file freetargetcheckaftermodechecks.patch
authorwiebe <redacted>
Sat, 20 Mar 2010 16:23:31 +0000 (17:23 +0100)
committerwiebe <redacted>
Sat, 20 Mar 2010 16:23:31 +0000 (17:23 +0100)
freetargetcheckaftermodechecks.patch [new file with mode: 0644]

diff --git a/freetargetcheckaftermodechecks.patch b/freetargetcheckaftermodechecks.patch
new file mode 100644 (file)
index 0000000..ab718e7
--- /dev/null
@@ -0,0 +1,96 @@
+move free target check after the snircd chanmode checks - dont use up a free target when the message never had a chance
+
+diff -r 03afb3a4d053 ircd/ircd_relay.c
+--- a/ircd/ircd_relay.c        Sat Mar 20 14:53:39 2010 +0100
++++ b/ircd/ircd_relay.c        Sat Mar 20 15:03:03 2010 +0100
+@@ -103,9 +103,6 @@
+     send_reply(sptr, ERR_CANNOTSENDTOCHAN, chptr->chname);
+     return;
+   }
+-  if ((chptr->mode.mode & MODE_NOPRIVMSGS) &&
+-      check_target_limit(sptr, chptr, chptr->chname, 0))
+-    return;
+   /* +T check */
+   if ((chptr->mode.mode & MODE_NOMULTITARGET) && (targetc > 1)) {
+@@ -128,6 +125,10 @@
+         return;
+       }
++  if ((chptr->mode.mode & MODE_NOPRIVMSGS) &&
++      check_target_limit(sptr, chptr, chptr->chname, 0))
++    return;
++
+   RevealDelayedJoinIfNeeded(sptr, chptr);
+   sendcmdto_channel_butone(sptr, CMD_PRIVATE, chptr, cli_from(sptr),
+                          SKIP_DEAF | SKIP_BURST, "%H :%s", chptr, text);
+@@ -156,10 +157,6 @@
+   if (!client_can_send_to_channel(sptr, chptr, 0))
+     return;
+-  if ((chptr->mode.mode & MODE_NOPRIVMSGS) &&
+-      check_target_limit(sptr, chptr, chptr->chname, 0))
+-    return;
+-
+   if ((chptr->mode.mode & MODE_NONOTICE))
+     return;
+@@ -178,6 +175,10 @@
+       if (*ch++==1)
+         return;
++  if ((chptr->mode.mode & MODE_NOPRIVMSGS) &&
++      check_target_limit(sptr, chptr, chptr->chname, 0))
++    return;
++
+   RevealDelayedJoinIfNeeded(sptr, chptr);
+   sendcmdto_channel_butone(sptr, CMD_NOTICE, chptr, cli_from(sptr),
+                          SKIP_DEAF | SKIP_BURST, "%H :%s", chptr, text);
+diff -r 03afb3a4d053 ircd/m_wallchops.c
+--- a/ircd/m_wallchops.c       Sat Mar 20 14:53:39 2010 +0100
++++ b/ircd/m_wallchops.c       Sat Mar 20 15:03:03 2010 +0100
+@@ -118,9 +118,6 @@
+   if (IsChannelName(parv[1]) && (chptr = FindChannel(parv[1]))) {
+     if (client_can_send_to_channel(sptr, chptr, 0) && !(chptr->mode.mode & MODE_NONOTICE)) {
+-      if ((chptr->mode.mode & MODE_NOPRIVMSGS) &&
+-          check_target_limit(sptr, chptr, chptr->chname, 0))
+-        return 0;
+       /* +cC checks */
+       if (chptr->mode.mode & MODE_NOCOLOUR)
+@@ -135,6 +132,10 @@
+             return 0;
+           }
++      if ((chptr->mode.mode & MODE_NOPRIVMSGS) &&
++          check_target_limit(sptr, chptr, chptr->chname, 0))
++        return 0;
++
+       RevealDelayedJoinIfNeeded(sptr, chptr);
+       sendcmdto_channel_butone(sptr, CMD_WALLCHOPS, chptr, cptr,
+                              SKIP_DEAF | SKIP_BURST | SKIP_NONOPS,
+diff -r 03afb3a4d053 ircd/m_wallvoices.c
+--- a/ircd/m_wallvoices.c      Sat Mar 20 14:53:39 2010 +0100
++++ b/ircd/m_wallvoices.c      Sat Mar 20 15:03:03 2010 +0100
+@@ -117,9 +117,6 @@
+   if (IsChannelName(parv[1]) && (chptr = FindChannel(parv[1]))) {
+     if (client_can_send_to_channel(sptr, chptr, 0) && !(chptr->mode.mode & MODE_NONOTICE)) {
+-      if ((chptr->mode.mode & MODE_NOPRIVMSGS) &&
+-          check_target_limit(sptr, chptr, chptr->chname, 0))
+-        return 0;
+       /* +cC checks */
+       if (chptr->mode.mode & MODE_NOCOLOUR)
+@@ -134,6 +131,10 @@
+             return 0;
+           }
++      if ((chptr->mode.mode & MODE_NOPRIVMSGS) &&
++          check_target_limit(sptr, chptr, chptr->chname, 0))
++        return 0;
++
+       RevealDelayedJoinIfNeeded(sptr, chptr);
+       sendcmdto_channel_butone(sptr, CMD_WALLVOICES, chptr, cptr,
+                              SKIP_DEAF | SKIP_BURST | SKIP_NONVOICES,