Apply patches #1197032, #1194116.
authorMichael Poole <mdpoole@troilus.org>
Sun, 8 May 2005 02:22:57 +0000 (02:22 +0000)
committerMichael Poole <mdpoole@troilus.org>
Sun, 8 May 2005 02:22:57 +0000 (02:22 +0000)
git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/trunk@1399 c9e4aea6-c8fd-4c43-8297-357d70d61c8c

ChangeLog
ircd/channel.c
ircd/m_trace.c

index 9e3fe6660d7dc4f49ba9c1b89e90b1bceb2f0c71..8d6f4115b02e237f72b03f01d4275b38e416ee9c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2005-05-04  Reed Loden <reed@reedloden.com>
+
+       * ircd/m_trace.c (do_trace): Show the real nickname instead of the
+       numnick.
+
+2005-05-02  Jan Krueger <jast@heapsort.de>
+
+       * ircd/channel.c (member_can_send_to_channel): if the channel can only
+       be joined by users with accounts (+r), do not allow users without
+       accounts to speak.
+
 2005-05-07  Michael Poole <mdpoole@troilus.org>
 
        * ircd/numnicks.c (base64toip): Fix bugs in parsing IPv6
index 633d28c14848b4db3899635a4bfbb2426e45a52b..ddb85d77d56a75cd32f65bbafd05f2e6434e5c37 100644 (file)
@@ -655,6 +655,9 @@ int member_can_send_to_channel(struct Membership* member, int reveal)
    */
   if (member->channel->mode.mode & MODE_MODERATED)
     return 0;
+  /* If only logged in users may join and you're not one, you can't speak. */
+  if (member->channel->mode.mode & MODE_REGONLY && !IsAccount(member->user))
+    return 0;
   /*
    * If you're banned then you can't speak either.
    * but because of the amount of CPU time that is_banned chews
index e261ac5105c6da091b25852b33b134648b1c329c..d5e4a4884d00af78da7eabc28323f5d251e41b81 100644 (file)
@@ -106,6 +106,7 @@ void do_trace(struct Client *cptr, struct Client *sptr, int parc, char *parv[])
 {
   int i;
   struct Client *acptr;
+  struct Client *acptr2;
   const struct ConnectionClass* cl;
   char* tname;
   int doall;
@@ -260,14 +261,19 @@ void do_trace(struct Client *cptr, struct Client *sptr, int parc, char *parv[])
          */
 
       case STAT_SERVER:
-        if (cli_serv(acptr)->user)
+        if (cli_serv(acptr)->user) {
+          if (!cli_serv(acptr)->by[0]
+              || !(acptr2 = findNUser(cli_serv(acptr)->by))
+              || (cli_user(acptr2) != cli_serv(acptr)->user))
+            acptr2 = NULL;
          send_reply(sptr, RPL_TRACESERVER, conClass, link_s[i],
                      link_u[i], cli_name(acptr),
-                     (*(cli_serv(acptr))->by) ? cli_serv(acptr)->by : "*",
-                     cli_serv(acptr)->user->username, cli_serv(acptr)->user->host,
+                     acptr2 ? cli_name(acptr2) : "*",
+                     cli_serv(acptr)->user->username,
+                     cli_serv(acptr)->user->host,
                      CurrentTime - cli_lasttime(acptr),
                      CurrentTime - cli_serv(acptr)->timestamp);
-       else
+        } else
          send_reply(sptr, RPL_TRACESERVER, conClass, link_s[i],
                      link_u[i], cli_name(acptr),
                      (*(cli_serv(acptr))->by) ?  cli_serv(acptr)->by : "*", "*",