- The big forward port. I probably broke lots of stuff, so please look over any
[ircu2.10.12-pk.git] / ircd / m_part.c
index 020b97a0bf0ba32db759a711c44b2bd1692a0412..492469202f0e9a0e0987a95c58447e3c5827abb6 100644 (file)
@@ -110,7 +110,7 @@ int m_part(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
   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')
@@ -168,7 +168,7 @@ int ms_part(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
   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')
@@ -194,6 +194,14 @@ int ms_part(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
     if (IsZombie(member)) /* figure out special flags... */
       flags |= CHFL_ZOMBIE;
 
+    /*
+     * 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))
+      flags |= CHFL_BANNED;
+
     /* part user from channel */
     joinbuf_join(&parts, chptr, flags);
   }