about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlexander Barton <alex@barton.de>2012-10-07 00:05:25 +0200
committerAlexander Barton <alex@barton.de>2012-10-07 00:05:25 +0200
commit161adbb1aa6235acda9677ab14edd19581d9fcf4 (patch)
treebdd1da6d9e684b9de61974b2f34c4805a4f230a1
parentde2fa78d92447d2acc3d349b8044524f5b616f59 (diff)
downloadngircd-161adbb1aa6235acda9677ab14edd19581d9fcf4.tar.gz
ngircd-161adbb1aa6235acda9677ab14edd19581d9fcf4.zip
WHOIS: show RPL_WHOISHOST_MSG to all IRC Ops in the network
Not only show RPL_WHOISHOST_MSG to local IRC opreators, but show
it to all IRC operators in the network. And don't show it to anybody
if the "more privacy" configuration option is enabled.

This closes bug #134.
-rw-r--r--src/ngircd/irc-info.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/ngircd/irc-info.c b/src/ngircd/irc-info.c
index 89defc38..31a57c6f 100644
--- a/src/ngircd/irc-info.c
+++ b/src/ngircd/irc-info.c
@@ -1156,17 +1156,19 @@ IRC_WHOIS_SendReply(CLIENT *Client, CLIENT *from, CLIENT *c)
 				Client_ID(from), Client_ID(c)))
 		return DISCONNECTED;
 
+	/* Local client and requester is the user itself or an IRC Op? */
 	if (Client_Conn(c) > NONE &&
-	    (from == c || (!Conf_MorePrivacy && Client_HasMode(from, 'o'))) &&
-	    !IRC_WriteStrClient(from, RPL_WHOISMODES_MSG, Client_ID(from),
-				Client_ID(c), Client_Modes(c)))
-		return DISCONNECTED;
-
-	if (Client_Conn(c) > NONE && (Client_OperByMe(from) || from == c) &&
-	    !IRC_WriteStrClient(from, RPL_WHOISHOST_MSG, Client_ID(from),
-				Client_ID(c), Client_Hostname(c),
-				Conn_GetIPAInfo(Client_Conn(c))))
-		return DISCONNECTED;
+	    (from == c || (!Conf_MorePrivacy && Client_HasMode(from, 'o')))) {
+		/* Client hostname */
+		if (!IRC_WriteStrClient(from, RPL_WHOISHOST_MSG,
+		    Client_ID(from), Client_ID(c), Client_Hostname(c),
+		    Conn_GetIPAInfo(Client_Conn(c))))
+			return DISCONNECTED;
+		/* Client modes */
+		if (!IRC_WriteStrClient(from, RPL_WHOISMODES_MSG,
+		    Client_ID(from), Client_ID(c), Client_Modes(c)))
+			return DISCONNECTED;
+	}
 
 	/* Idle and signon time (local clients only!) */
 	if (!Conf_MorePrivacy && Client_Conn(c) > NONE &&