2004-05-09 Michael Poole <mdpoole@troilus.org>
[ircu2.10.12-pk.git] / ircd / channel.c
index 0e8ba0178e2a09c3a6e8237fef2e969e3e3425c1..0aa8da8650b4f73dc2e7318fb4301d4da07af950 100644 (file)
@@ -711,7 +711,7 @@ int client_can_send_to_channel(struct Client *cptr, struct Channel *chptr)
 
 /*
  * find_no_nickchange_channel
- * if a member and not opped or voiced and banned
+ * if a member and not (opped or voiced) and (banned or moderated)
  * return the name of the first channel banned on
  */
 const char* find_no_nickchange_channel(struct Client* cptr)
@@ -720,7 +720,9 @@ const char* find_no_nickchange_channel(struct Client* cptr)
     struct Membership* member;
     for (member = (cli_user(cptr))->channel; member;
         member = member->next_channel) {
-      if (!IsVoicedOrOpped(member) && is_banned(cptr, member->channel, member))
+        if (!IsVoicedOrOpped(member) &&
+            (is_banned(cptr, member->channel, member) ||
+             (member->channel->mode.mode & MODE_MODERATED)))
         return member->channel->chname;
     }
   }