Remove limit and keys when a channel is wiped out during burst.
authorMichael Poole <mdpoole@troilus.org>
Thu, 24 Mar 2005 01:37:39 +0000 (01:37 +0000)
committerMichael Poole <mdpoole@troilus.org>
Thu, 24 Mar 2005 01:37:39 +0000 (01:37 +0000)
git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/trunk@1340 c9e4aea6-c8fd-4c43-8297-357d70d61c8c

ChangeLog
ircd/m_burst.c

index 60bdf8f115339acf40ac8dda10942ec94ee3aa40..359006c46bffe382e902cd29374c5f127d00eaf2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-03-23  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_burst.c (ms_burst): Remove limit and keys when a channel
+       is wiped out during burst.
+
 2005-03-22  Michael Poole <mdpoole@troilus.org>
 
        * ircd/ircd_res.c (check_resolver_timeout): I give up.  Use the
index 42b39cd7ba501850b2d53ea10ade226ff727b7a2..0e2d61307c12bc594b6ea7293c738adbe6529f4a 100644 (file)
@@ -277,6 +277,24 @@ int ms_burst(struct Client *cptr, struct Client *sptr, int parc, char *parv[])
     modebuf_mode(mbuf, MODE_DEL | chptr->mode.mode); /* wipeout modes */
     chptr->mode.mode &= MODE_BURSTADDED | MODE_WASDELJOINS;
 
+    /* wipe out modes not represented in chptr->mode.mode */
+    if (chptr->mode.limit) {
+      modebuf_mode_uint(mbuf, MODE_DEL | MODE_LIMIT, chptr->mode.limit);
+      chptr->mode.limit = 0;
+    }
+    if (chptr->mode.key[0]) {
+      modebuf_mode_string(mbuf, MODE_DEL | MODE_KEY, chptr->mode.key, 0);
+      chptr->mode.key[0] = '\0';
+    }
+    if (chptr->mode.upass[0]) {
+      modebuf_mode_string(mbuf, MODE_DEL | MODE_UPASS, chptr->mode.upass, 0);
+      chptr->mode.upass[0] = '\0';
+    }
+    if (chptr->mode.apass[0]) {
+      modebuf_mode_string(mbuf, MODE_DEL | MODE_APASS, chptr->mode.apass, 0);
+      chptr->mode.apass[0] = '\0';
+    }
+
     parse_flags |= (MODE_PARSE_SET | MODE_PARSE_WIPEOUT); /* wipeout keys */
 
     /* mark bans for wipeout */