From 6aada8b2ec0b01f23cd21e2e721a449258d11700 Mon Sep 17 00:00:00 2001 From: Michael Poole Date: Tue, 6 Mar 2007 02:35:57 +0000 Subject: [PATCH] Fix SourceForge bug #1674539, and add a test for it. git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/branches/u2_10_12_branch@1770 c9e4aea6-c8fd-4c43-8297-357d70d61c8c --- ChangeLog | 9 +++++++++ ircd/m_privs.c | 2 +- tests/bug-1674539.cmd | 33 +++++++++++++++++++++++++++++++++ tests/test-driver.pl | 1 + 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 tests/bug-1674539.cmd diff --git a/ChangeLog b/ChangeLog index fd0bda0..3862775 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2007-03-05 Michael Poole + + * 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 * tests/ircd.conf: Make into a hub. diff --git a/ircd/m_privs.c b/ircd/m_privs.c index ed4494b..53904fd 100644 --- a/ircd/m_privs.c +++ b/ircd/m_privs.c @@ -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 index 0000000..e084d1f --- /dev/null +++ b/tests/bug-1674539.cmd @@ -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 diff --git a/tests/test-driver.pl b/tests/test-driver.pl index 64bc5be..8fd0102 100755 --- a/tests/test-driver.pl +++ b/tests/test-driver.pl @@ -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, -- 2.20.1