Committer  : entrope
CVSROOT    : /cvsroot/undernet-ircu
Module     : ircu2.10
Branch tags: u2_10_12_branch
Commit time: 2007-11-28 05:47:22 UTC

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

Log message:

Once again allow MODE #channel -b+b [EMAIL PROTECTED] [EMAIL PROTECTED]
Fixes bug SF#1840011.

---------------------- diff included ----------------------
Index: ircu2.10/ChangeLog
diff -u ircu2.10/ChangeLog:1.710.2.216 ircu2.10/ChangeLog:1.710.2.217
--- ircu2.10/ChangeLog:1.710.2.216      Sat Nov 24 18:42:54 2007
+++ ircu2.10/ChangeLog  Tue Nov 27 21:47:11 2007
@@ -1,3 +1,8 @@
+2007-11-28  Michael Poole <[EMAIL PROTECTED]>
+
+       * ircd/channel.c (mode_ban_invalidate): Clarify Doxygen comments.
+       (apply_ban): Only block narrower bans if the wider ban is active.
+
 2007-11-24  Michael Poole <[EMAIL PROTECTED]>
 
        * ircd/m_names.c (do_names): Don't try to re-initialize the start
Index: ircu2.10/ircd/channel.c
diff -u ircu2.10/ircd/channel.c:1.155.2.18 ircu2.10/ircd/channel.c:1.155.2.19
--- ircu2.10/ircd/channel.c:1.155.2.18  Tue Aug 14 19:49:54 2007
+++ ircu2.10/ircd/channel.c     Tue Nov 27 21:47:11 2007
@@ -19,7 +19,7 @@
  */
 /** @file
  * @brief Channel management and maintenance
- * @version $Id: channel.c,v 1.155.2.18 2007/08/15 02:49:54 entrope Exp $
+ * @version $Id: channel.c,v 1.155.2.19 2007/11/28 05:47:11 entrope Exp $
  */
 #include "config.h"
 
@@ -2172,9 +2172,10 @@
   return;
 }
 
-/** Simple function to invalidate bans
+/** Simple function to invalidate a channel's ban cache.
  *
- * This function sets all bans as being valid.
+ * This function marks all members of the channel as being neither
+ * banned nor banned.
  *
  * @param chan The channel to operate on.
  */
@@ -2766,9 +2767,9 @@
   assert(newban->flags & (BAN_ADD|BAN_DEL));
   if (newban->flags & BAN_ADD) {
     size_t totlen = 0;
-    /* If a less specific entry is found, fail.  */
+    /* If a less specific *active* entry is found, fail.  */
     for (ban = *banlist; ban; ban = ban->next) {
-      if (!bmatch(ban, newban)) {
+      if (!bmatch(ban, newban) && !(ban->flags & BAN_DEL)) {
         if (do_free)
           free_ban(newban);
         return 1;
----------------------- End of diff -----------------------
_______________________________________________
Patches mailing list
[email protected]
http://undernet.sbg.org/mailman/listinfo/patches

Reply via email to