about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--src/ngircd/irc-info.c2
-rw-r--r--src/testsuite/ngircd-test.conf5
-rw-r--r--src/testsuite/who-test.e10
4 files changed, 18 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 64807e7f..6213d7a1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -12,6 +12,8 @@
 
 ngIRCd-dev
 
+  - Fix Bug: 85: "WHO #SecretChannel" that user is not a member of now returns
+    proper RPL_ENDOFWHO_MSG instead of nothing. (Ali Shemiran)
   - Implemented IRC commands SERVICE, SERVLIST, and SQUERY as dummy functions
     to be even more RFC-compliant. Closes bug 74.
   - Fixed Bug 75: KICK now handles comma-delimited lists.
diff --git a/src/ngircd/irc-info.c b/src/ngircd/irc-info.c
index 93c43f6a..86e1ace2 100644
--- a/src/ngircd/irc-info.c
+++ b/src/ngircd/irc-info.c
@@ -738,7 +738,7 @@ IRC_Send_WHO(CLIENT *Client, CHANNEL *Chan, bool OnlyOps)
 
 	/* Secret channel? */
 	if (!is_member && strchr(Channel_Modes(Chan), 's'))
-		return CONNECTED;
+		return IRC_WriteStrClient(Client, RPL_ENDOFWHO_MSG, Client_ID(Client), Channel_Name(Chan));
 
 	cl2chan = Channel_FirstMember(Chan);
 	for (; cl2chan ; cl2chan = Channel_NextMember(Chan, cl2chan)) {
diff --git a/src/testsuite/ngircd-test.conf b/src/testsuite/ngircd-test.conf
index eeace761..4d918e0e 100644
--- a/src/testsuite/ngircd-test.conf
+++ b/src/testsuite/ngircd-test.conf
@@ -28,5 +28,10 @@
 	Name = #TopicChannel
 	Modes = t
 	Topic = the topic
+	
+[CHANNEL]
+	Name = #SecretChannel
+	Modes = s
+	Topic = A secret Channel
 
 # -eof-
diff --git a/src/testsuite/who-test.e b/src/testsuite/who-test.e
index aafa7956..2e148447 100644
--- a/src/testsuite/who-test.e
+++ b/src/testsuite/who-test.e
@@ -152,6 +152,16 @@ expect {
 	timeout { exit 1 }
 	":ngircd.test.server 352 nick \* * localhost ngircd.test.server nick H\* :0 Real Name"
 }
+expect {
+	timeout { exit 1 }
+	"315"
+}
+
+send "who #SecretChannel\r"
+expect {
+	timeout { exit 1 }
+	"315"
+}
 
 send "quit\r"
 expect {