Fix SourceForge bug #1674539, and add a test for it.
authorMichael Poole <mdpoole@troilus.org>
Tue, 6 Mar 2007 02:35:57 +0000 (02:35 +0000)
committerMichael Poole <mdpoole@troilus.org>
Tue, 6 Mar 2007 02:35:57 +0000 (02:35 +0000)
git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/branches/u2_10_12_branch@1770 c9e4aea6-c8fd-4c43-8297-357d70d61c8c

ChangeLog
ircd/m_privs.c
tests/bug-1674539.cmd [new file with mode: 0644]
tests/test-driver.pl

index fd0bda03464cc8c0973168cefdd24fa204d442c4..38627755d272683c46c247a2bd2d00245fe1fb7f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2007-03-05  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_privs.c (ms_privs): Use the correct source when
+       forwarding the PRIVS request.
+
+       * tests/bug-1674539.cmd: New file to test for this.
+
+       * tests/test-driver.pl: Recognize "oper" command from scripts.
+
 2007-03-05  Michael Poole <mdpoole@troilus.org>
 
        * tests/ircd.conf: Make into a hub.
index ed4494b0eceb3260cfb7250d4c2ccbd00e236442..53904fdca350933eb0c1ef71e997a4add5f8de91 100644 (file)
@@ -94,7 +94,7 @@ int ms_privs(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
       else if (MyUser(acptr))
        client_report_privs(sptr, acptr);
       else
-        sendcmdto_one(cptr, CMD_PRIVS, acptr, "%s%s", NumNick(acptr));
+        sendcmdto_one(sptr, CMD_PRIVS, acptr, "%s%s", NumNick(acptr));
     }
   }
 
diff --git a/tests/bug-1674539.cmd b/tests/bug-1674539.cmd
new file mode 100644 (file)
index 0000000..e084d1f
--- /dev/null
@@ -0,0 +1,33 @@
+define srv1 127.0.0.1:7611
+define srv1-name irc-2.example.net
+define srv2 127.0.0.2:7621
+define srv2-name irc-3.example.net
+define cl1-nick oper1
+define cl2-nick oper2
+define cl3-nick oper3
+
+# Connect two clients to server 1, one to server 2, and oper them all up.
+connect cl1 %cl1-nick% oper %srv1% :Oper 1
+connect cl2 %cl2-nick% oper %srv1% :Oper 2
+connect cl3 %cl3-nick% oper %srv2% :Oper 3
+:cl1 oper oper oper
+:cl2 oper oper oper
+:cl3 oper oper oper
+
+# Check that we get local privileges properly.
+:cl1 wait cl2,cl3
+:cl1 raw :privs %cl1-nick%
+:cl1 expect %srv1-name% 270 %cl1-nick% %cl1-nick% :CHAN_LIMIT
+:cl1 raw :privs %cl2-nick%
+:cl1 expect %srv1-name% 270 %cl1-nick% %cl2-nick% :CHAN_LIMIT
+
+# Bug 1674539 is that remote /privs do not get any response.
+# Testing shows that the problem only shows up with a hub between.
+:cl1 raw :privs %cl3-nick%
+:cl1 expect %srv2-name% 270 %cl1-nick% %cl3-nick% :CHAN_LIMIT
+
+# Synchronize everything
+sync cl1,cl2,cl3
+:cl1 quit done
+:cl2 quit done
+:cl3 quit done
index 64bc5bea7474e8f1c4a74451d2a694500544410a..8fd010255c089e036c84586e6b79d484050fd6bb 100755 (executable)
@@ -58,6 +58,7 @@ POE::Session->create(inline_states =>
                       cmd_mode => \&cmd_generic,
                       cmd_nick => \&cmd_generic,
                       cmd_notice => \&cmd_message,
+                      cmd_oper => \&cmd_generic,
                       cmd_part => \&cmd_generic,
                       cmd_privmsg => \&cmd_message,
                       cmd_quit => \&cmd_generic,