Committer  : entrope
CVSROOT    : /cvsroot/undernet-ircu
Module     : ircu2.10
Branch tags: u2_10_12_branch
Commit time: 2005-10-31 23:33:46 UTC

Modified files:
  Tag: u2_10_12_branch
     ChangeLog ircd/channel.c

Log message:

Do not send MODE_WASDELJOINS changes to remote servers.

---------------------- diff included ----------------------
Index: ircu2.10/ChangeLog
diff -u ircu2.10/ChangeLog:1.710.2.20 ircu2.10/ChangeLog:1.710.2.21
--- ircu2.10/ChangeLog:1.710.2.20       Mon Oct 31 15:16:55 2005
+++ ircu2.10/ChangeLog  Mon Oct 31 15:33:36 2005
@@ -1,3 +1,9 @@
+2005-10-31  Michael Poole <[EMAIL PROTECTED]>
+       (Based on a patch by Romain Bignon <[EMAIL PROTECTED]>)
+
+       * ircd/channel.c: Some modes (currently only WASDELJOINS) should
+       not be propagated to remote servers.
+
 2005-10-30  Michael Poole <[EMAIL PROTECTED]>
 
        * ircd/channel.c (mode_parse_apass): Move all send_reply() errors
Index: ircu2.10/ircd/channel.c
diff -u ircu2.10/ircd/channel.c:1.155.2.1 ircu2.10/ircd/channel.c:1.155.2.2
--- ircu2.10/ircd/channel.c:1.155.2.1   Mon Oct 31 15:16:56 2005
+++ ircu2.10/ircd/channel.c     Mon Oct 31 15:33:36 2005
@@ -19,7 +19,7 @@
  */
 /** @file
  * @brief Channel management and maintenance
- * @version $Id: channel.c,v 1.155.2.1 2005/10/31 23:16:56 entrope Exp $
+ * @version $Id: channel.c,v 1.155.2.2 2005/10/31 23:33:36 entrope Exp $
  */
 #include "config.h"
 
@@ -1518,7 +1518,6 @@
     MODE_NOPRIVMSGS,   'n',
     MODE_REGONLY,      'r',
     MODE_DELJOINS,      'D',
-    MODE_WASDELJOINS,   'd',
 /*  MODE_KEY,          'k', */
 /*  MODE_BAN,          'b', */
     MODE_LIMIT,                'l',
@@ -1526,15 +1525,19 @@
 /*  MODE_UPASS,                'U', */
     0x0, 0x0
   };
+  static int local_flags[] = {
+    MODE_WASDELJOINS,   'd',
+    0x0, 0x0
+  };
   int i;
   int *flag_p;
 
   struct Client *app_source; /* where the MODE appears to come from */
 
-  char addbuf[20]; /* accumulates +psmtin, etc. */
-  int addbuf_i = 0;
-  char rembuf[20]; /* accumulates -psmtin, etc. */
-  int rembuf_i = 0;
+  char addbuf[20], addbuf_local[20]; /* accumulates +psmtin, etc. */
+  int addbuf_i = 0, addbuf_local_i = 0;
+  char rembuf[20], rembuf_local[20]; /* accumulates -psmtin, etc. */
+  int rembuf_i = 0, rembuf_local_i = 0;
   char *bufptr; /* we make use of indirection to simplify the code */
   int *bufptr_i;
 
@@ -1580,6 +1583,14 @@
       rembuf[rembuf_i++] = flag_p[1];
   }
 
+  /* Some flags may be for local display only. */
+  for (flag_p = local_flags; flag_p[0]; flag_p += 2) {
+    if (*flag_p & mbuf->mb_add)
+      addbuf_local[addbuf_local_i++] = flag_p[1];
+    else if (*flag_p & mbuf->mb_rem)
+      rembuf_local[rembuf_local_i++] = flag_p[1];
+  }
+
   /* Now go through the modes with arguments... */
   for (i = 0; i < mbuf->mb_count; i++) {
     if (MB_TYPE(mbuf, i) & MODE_ADD) { /* adding or removing? */
@@ -1649,6 +1660,8 @@
   /* terminate the mode strings */
   addbuf[addbuf_i] = '\0';
   rembuf[rembuf_i] = '\0';
+  addbuf_local[addbuf_local_i] = '\0';
+  rembuf_local[rembuf_local_i] = '\0';
 
   /* If we're building a user visible MODE or HACK... */
   if (mbuf->mb_dest & (MODEBUF_DEST_CHANNEL | MODEBUF_DEST_HACK2 |
@@ -1736,9 +1749,12 @@
 
     if (mbuf->mb_dest & MODEBUF_DEST_CHANNEL)
       sendcmdto_channel_butserv_butone(app_source, CMD_MODE, mbuf->mb_channel, 
NULL, 0,
-                               "%H %s%s%s%s%s%s", mbuf->mb_channel,
-                               rembuf_i ? "-" : "", rembuf,
-                               addbuf_i ? "+" : "", addbuf, remstr, addstr);
+                                       "%H %s%s%s%s%s%s%s%s", mbuf->mb_channel,
+                                       rembuf_i || rembuf_local_i ? "-" : "",
+                                       rembuf, rembuf_local,
+                                       addbuf_i || addbuf_local_i ? "+" : "",
+                                       addbuf, addbuf_local,
+                                       remstr, addstr);
   }
 
   /* Now are we supposed to propagate to other servers? */
----------------------- End of diff -----------------------
_______________________________________________
Patches mailing list
[email protected]
http://undernet.sbg.org/mailman/listinfo/patches

Reply via email to