CVSROOT    : /cvsroot/undernet-ircu
Module     : ircu2.10
Branch tags: u2_10_11_05
Commit time: 2003-10-25 03:24:19 UTC

Modified files:
  Tag: u2_10_11_05
     ChangeLog include/channel.h ircd/channel.c

Log message:

Author: Entrope <[EMAIL PROTECTED]>
Log message:

        * include/channel.h: Add new flag to indicate a user is
        parting a channel.

        * ircd/channel.c: Use it.

---------------------- diff included ----------------------
Index: ircu2.10/ChangeLog
diff -u ircu2.10/ChangeLog:1.290.2.128.2.37 ircu2.10/ChangeLog:1.290.2.128.2.38
--- ircu2.10/ChangeLog:1.290.2.128.2.37 Fri Oct 24 20:00:01 2003
+++ ircu2.10/ChangeLog  Fri Oct 24 20:24:09 2003
@@ -1,3 +1,8 @@
+2003-10-24  Entrope <[EMAIL PROTECTED]>
+        * include/channel.h: Add new flag to indicate a user is
+        parting a channel.
+
+        * ircd/channel.c: Use it.
 2003-10-25 Isomer <[EMAIL PROTECTED]>
        * ircd/gline.c: Make sure we never use the gl_host variable when we
        are dealing with a realname (or other magical) gline.
Index: ircu2.10/include/channel.h
diff -u ircu2.10/include/channel.h:1.25.2.6.2.1 ircu2.10/include/channel.h:1.25.2.6.2.2
--- ircu2.10/include/channel.h:1.25.2.6.2.1     Fri Apr 18 19:22:56 2003
+++ ircu2.10/include/channel.h  Fri Oct 24 20:24:09 2003
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  *
- * $Id: channel.h,v 1.25.2.6.2.1 2003/04/19 02:22:56 isomer Exp $
+ * $Id: channel.h,v 1.25.2.6.2.2 2003/10/25 03:24:09 isomer Exp $
  */
 #ifndef INCLUDED_channel_h
 #define INCLUDED_channel_h
@@ -66,6 +66,7 @@
 #define CHFL_BANVALID           0x0800  /* CHFL_BANNED bit is valid */
 #define CHFL_BANNED             0x1000  /* Channel member is banned */
 #define CHFL_SILENCE_IPMASK     0x2000  /* silence mask is an IP-number mask */
+#define CHFL_USER_PARTING       0x4000  /* User is already parting that channel */
 
 #define CHFL_OVERLAP         (CHFL_CHANOP | CHFL_VOICE)
 #define CHFL_BANVALIDMASK    (CHFL_BANVALID | CHFL_BANNED)
@@ -180,6 +181,7 @@
 #define IsServOpOk(x)       ((x)->status & CHFL_SERVOPOK)
 #define IsBurstJoined(x)    ((x)->status & CHFL_BURST_JOINED)
 #define IsVoicedOrOpped(x)  ((x)->status & CHFL_VOICED_OR_OPPED)
+#define IsUserParting(x)    ((x)->status & CHFL_USER_PARTING)
 
 #define SetBanned(x)        ((x)->status |= CHFL_BANNED)
 #define SetBanValid(x)      ((x)->status |= CHFL_BANVALID)
@@ -187,6 +189,7 @@
 #define SetServOpOk(x)      ((x)->status |= CHFL_SERVOPOK)
 #define SetBurstJoined(x)   ((x)->status |= CHFL_BURST_JOINED)
 #define SetZombie(x)        ((x)->status |= CHFL_ZOMBIE)
+#define SetUserParting(x)   ((x)->status |= CHFL_USER_PARTING)
 
 #define ClearBanned(x)      ((x)->status &= ~CHFL_BANNED)
 #define ClearBanValid(x)    ((x)->status &= ~CHFL_BANVALID)
Index: ircu2.10/ircd/channel.c
diff -u ircu2.10/ircd/channel.c:1.73.2.13.2.3 ircu2.10/ircd/channel.c:1.73.2.13.2.4
--- ircu2.10/ircd/channel.c:1.73.2.13.2.3       Wed Oct 15 08:14:45 2003
+++ ircu2.10/ircd/channel.c     Fri Oct 24 20:24:09 2003
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  *
- * $Id: channel.c,v 1.73.2.13.2.3 2003/10/15 15:14:45 splidge Exp $
+ * $Id: channel.c,v 1.73.2.13.2.4 2003/10/25 03:24:09 isomer Exp $
  */
 #include "config.h"
 
@@ -2704,6 +2704,12 @@
     /* got to remove user here */
     if (jbuf->jb_type == JOINBUF_TYPE_PARTALL || is_local)
       remove_user_from_channel(jbuf->jb_source, chan);
+    else {
+      struct Membership *member = find_member_link(chan, jbuf->jb_source);
+      if (IsUserParting(member))
+        return;
+      SetUserParting(member);
+    }
   } else {
     /* Add user to channel */
     add_user_to_channel(chan, jbuf->jb_source, flags);
----------------------- End of diff -----------------------

Reply via email to