summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAlexander Barton <alex@barton.de>2011-01-18 21:04:55 +0100
committerAlexander Barton <alex@barton.de>2011-01-18 21:04:55 +0100
commita990bd72ece1569ec24b598cfa7ac83d25a3cb8f (patch)
tree6256c910f6404cd4a9b9adb5f44087b65eb91e24 /src
parent5a34bb203ae61c22edbf64741cf9222a04eeead9 (diff)
downloadngircd-a990bd72ece1569ec24b598cfa7ac83d25a3cb8f.tar.gz
ngircd-a990bd72ece1569ec24b598cfa7ac83d25a3cb8f.zip
Enable WHOIS command to return information about services
Diffstat (limited to 'src')
-rw-r--r--src/ngircd/irc-info.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/ngircd/irc-info.c b/src/ngircd/irc-info.c
index 638a8e92..9640a307 100644
--- a/src/ngircd/irc-info.c
+++ b/src/ngircd/irc-info.c
@@ -914,6 +914,15 @@ IRC_WHO( CLIENT *Client, REQUEST *Req )
 } /* IRC_WHO */
 
 
+/**
+ * Handler for the IRC "WHOIS" command.
+ *
+ * See RFC 2812, 3.6.2 "Whois query".
+ *
+ * @param Client	The client from which this command has been received.
+ * @param Req		Request structure with prefix and all parameters.
+ * @return		CONNECTED or DISCONNECTED.
+ */
 GLOBAL bool
 IRC_WHOIS( CLIENT *Client, REQUEST *Req )
 {
@@ -926,11 +935,17 @@ IRC_WHOIS( CLIENT *Client, REQUEST *Req )
 	assert( Req != NULL );
 
 	/* Bad number of parameters? */
-	if(( Req->argc < 1 ) || ( Req->argc > 2 )) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command );
+	if (Req->argc < 1 || Req->argc > 2)
+		return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG,
+					  Client_ID(Client), Req->command);
 
 	/* Search client */
-	c = Client_Search( Req->argv[Req->argc - 1] );
-	if(( ! c ) || ( Client_Type( c ) != CLIENT_USER )) return IRC_WriteStrClient( Client, ERR_NOSUCHNICK_MSG, Client_ID( Client ), Req->argv[Req->argc - 1] );
+	c = Client_Search(Req->argv[Req->argc - 1]);
+	if (!c || (Client_Type(c) != CLIENT_USER
+		   && Client_Type(c) != CLIENT_SERVICE))
+		return IRC_WriteStrClient(Client, ERR_NOSUCHNICK_MSG,
+					  Client_ID(Client),
+					  Req->argv[Req->argc - 1]);
 
 	/* Search sender of the WHOIS */
 	if( Client_Type( Client ) == CLIENT_SERVER ) from = Client_Search( Req->prefix );