]> arthur.barton.de Git - ngircd-alex.git/commitdiff
Enable WHOIS command to return information about services
authorAlexander Barton <alex@barton.de>
Tue, 18 Jan 2011 20:04:55 +0000 (21:04 +0100)
committerAlexander Barton <alex@barton.de>
Tue, 18 Jan 2011 20:04:55 +0000 (21:04 +0100)
src/ngircd/irc-info.c

index 638a8e92f9156be6a453af1ae07224426040ecb3..9640a307977b43fc5f3b8bd56ec4994b894c3b92 100644 (file)
@@ -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 );