#include "client.h"
#include "hash.h"
#include "ircd.h"
+#include "ircd_log.h"
#include "ircd_reply.h"
#include "ircd_string.h"
#include "numeric.h"
#include "numnicks.h"
#include "send.h"
-#include <assert.h>
+/* #include <assert.h> -- Now using assert in ircd_log.h */
#include <string.h>
/*
struct Channel *chptr;
struct Membership *member;
struct JoinBuf parts;
+ unsigned int flags = 0;
char *p = 0;
char *name;
- cli_flags(sptr) &= ~FLAGS_TS8;
+ ClrFlag(sptr, FLAG_TS8);
/* check number of arguments */
if (parc < 2 || parv[1][0] == '\0')
assert(!IsZombie(member)); /* Local users should never zombie */
- joinbuf_join(&parts, chptr, /* part client from channel */
- member_can_send_to_channel(member) ? 0 : CHFL_BANNED);
+ if (!member_can_send_to_channel(member, 0))
+ {
+ flags |= CHFL_BANNED;
+ /* Remote clients don't want to see a comment either. */
+ parts.jb_comment = 0;
+ }
+
+ if (IsDelayedJoin(member))
+ flags |= CHFL_DELAYED;
+
+ joinbuf_join(&parts, chptr, flags); /* part client from channel */
}
return joinbuf_flush(&parts); /* flush channel parts */
char *p = 0;
char *name;
- cli_flags(sptr) &= ~FLAGS_TS8;
+ ClrFlag(sptr, FLAG_TS8);
/* check number of arguments */
if (parc < 2 || parv[1][0] == '\0')
if (IsZombie(member)) /* figure out special flags... */
flags |= CHFL_ZOMBIE;
+
+ if (IsDelayedJoin(member))
+ flags |= CHFL_DELAYED;
+
/*
* XXX BUG: If a client /part's with a part notice, on channels where
* he's banned, local clients will not see the part notice, but remote
* clients will.
*/
- if (!member_can_send_to_channel(member))
+ if (!member_can_send_to_channel(member, 0))
flags |= CHFL_BANNED;
/* part user from channel */