Committer : entrope
CVSROOT : /cvsroot/undernet-ircu
Module : ircu2.10
Commit time: 2005-10-31 23:35:51 UTC
Modified files:
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.732 ircu2.10/ChangeLog:1.733
--- ircu2.10/ChangeLog:1.732 Mon Oct 31 15:17:28 2005
+++ ircu2.10/ChangeLog Mon Oct 31 15:35:41 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.157 ircu2.10/ircd/channel.c:1.158
--- ircu2.10/ircd/channel.c:1.157 Mon Oct 31 15:17:28 2005
+++ ircu2.10/ircd/channel.c Mon Oct 31 15:35:41 2005
@@ -19,7 +19,7 @@
*/
/** @file
* @brief Channel management and maintenance
- * @version $Id: channel.c,v 1.157 2005/10/31 23:17:28 entrope Exp $
+ * @version $Id: channel.c,v 1.158 2005/10/31 23:35:41 entrope Exp $
*/
#include "config.h"
@@ -1490,7 +1490,6 @@
MODE_NOPRIVMSGS, 'n',
MODE_REGONLY, 'r',
MODE_DELJOINS, 'D',
- MODE_WASDELJOINS, 'd',
/* MODE_KEY, 'k', */
/* MODE_BAN, 'b', */
MODE_LIMIT, 'l',
@@ -1498,15 +1497,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;
@@ -1552,6 +1555,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? */
@@ -1621,6 +1632,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 |
@@ -1708,9 +1721,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