repo: ngircd
action: commit
revision: 
path_from: 
revision_from: 7adc4b8e99c64c150861c6ad5a197d88141afa13:
path_to: 
revision_to: 
git.thebackupbox.net
ngircd
git clone git://git.thebackupbox.net/ngircd
commit 7adc4b8e99c64c150861c6ad5a197d88141afa13
Author: Federico G. Schwindt 
Date:   Thu Jul 18 19:52:17 2013 +0100

    Handle services in IRC_WHOIS_SendReply()

    If the target is a service, advertise it as such and ignore operator mode.

diff --git a/src/ngircd/irc-info.c b/src/ngircd/irc-info.c
index 668f5ed6fc4c5be0bb8445531282398c7e52284c..
index ..046648fdfa02cab53369ccbf81f33de40801de0f 100644
--- a/src/ngircd/irc-info.c
+++ b/src/ngircd/irc-info.c
@@ -361,8 +361,15 @@ IRC_WHOIS_SendReply(CLIENT *Client, CLIENT *from, CLIENT *c)
 			return DISCONNECTED;
 	}

+	/* IRC-Services? */
+	if (Client_Type(c) == CLIENT_SERVICE &&
+	    !IRC_WriteStrClient(from, RPL_WHOISSERVICE_MSG,
+				Client_ID(from), Client_ID(c)))
+		return DISCONNECTED;
+
 	/* IRC-Operator? */
-	if (Client_HasMode(c, 'o') &&
+	if (Client_Type(c) != CLIENT_SERVICE &&
+	    Client_HasMode(c, 'o') &&
 	    !IRC_WriteStrClient(from, RPL_WHOISOPERATOR_MSG,
 				Client_ID(from), Client_ID(c)))
 		return DISCONNECTED;

-----END OF PAGE-----