Limit nick changes when speaking is limited.
authorMichael Poole <mdpoole@troilus.org>
Tue, 15 Nov 2005 01:54:15 +0000 (01:54 +0000)
committerMichael Poole <mdpoole@troilus.org>
Tue, 15 Nov 2005 01:54:15 +0000 (01:54 +0000)
git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/branches/u2_10_12_branch@1552 c9e4aea6-c8fd-4c43-8297-357d70d61c8c

ChangeLog
ircd/channel.c

index 6f84307992f8df201663e219cbb989cf1db3b521..5979a747b007b0659f67d747d3a8ee6d31e45bf5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-11-14  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/channel.c (find_no_nickchange_channel): Disallow nick
+       changes by voiceless no-account users on a +r channel.
+
 2005-11-14  Michael Poole <mdpoole@troilus.org>
 
        * ircd/m_kick.c (ms_kick): Fix test for whether a client's own
index 6ff0c8293fb8544105d4baaf46ab4a88ef722119..57839aa6c6c3fcbf095245f6e2c85c7a9ee4e6ef 100644 (file)
@@ -760,9 +760,11 @@ 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(member) ||
-             (member->channel->mode.mode & MODE_MODERATED)))
+      if (IsVoicedOrOpped(member))
+        continue;
+      if ((member->channel->mode.mode & MODE_MODERATED)
+          || (member->channel->mode.mode & MODE_REGONLY && !IsAccount(cptr))
+          || is_banned(member))
         return member->channel->chname;
     }
   }