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 -----------------------