]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/irc-info.c
WHOIS command: don't anser queries for IRC servers
[ngircd-alex.git] / src / ngircd / irc-info.c
index dfc67b9b7660151da04b1e4fc9559bccef829c67..883893fc5d2c4add0d9cf61a3ebb7e86dca84824 100644 (file)
@@ -254,7 +254,8 @@ IRC_LINKS(CLIENT *Client, REQUEST *Req)
 
        c = Client_First();
        while (c) {
-               if (Client_Type(c) == CLIENT_SERVER) {
+               if (Client_Type(c) == CLIENT_SERVER
+                   && MatchCaseInsensitive(mask, Client_ID(c))) {
                        if (!IRC_WriteStrClient(from, RPL_LINKS_MSG,
                                        Client_ID(from), Client_ID(c),
                                        Client_ID(Client_TopServer(c)
@@ -1108,8 +1109,7 @@ IRC_WHOIS_SendReply(CLIENT *Client, CLIENT *from, CLIENT *c)
                                    Client_Away(c)))
                        return DISCONNECTED;
 
-       return IRC_WriteStrClient(from, RPL_ENDOFWHOIS_MSG,
-                                 Client_ID(from), Client_ID(c));
+       return CONNECTED;
 } /* IRC_WHOIS_SendReply */
 
 
@@ -1185,7 +1185,7 @@ IRC_WHOIS( CLIENT *Client, REQUEST *Req )
                 */
                if (!has_wildcards || is_remote) {
                        c = Client_Search(query);
-                       if (c) {
+                       if (c && Client_Type(c) == CLIENT_USER) {
                                if (!IRC_WHOIS_SendReply(Client, from, c))
                                        return DISCONNECTED;
                        } else {
@@ -1218,10 +1218,12 @@ IRC_WHOIS( CLIENT *Client, REQUEST *Req )
                }
 
                if (match_count == 0)
-                       return IRC_WriteStrClient(Client, ERR_NOSUCHNICK_MSG,
-                               Client_ID(Client), Req->argv[Req->argc - 1]);
+                       IRC_WriteStrClient(Client, ERR_NOSUCHNICK_MSG,
+                                          Client_ID(Client),
+                                          Req->argv[Req->argc - 1]);
        }
-       return CONNECTED;
+       return IRC_WriteStrClient(from, RPL_ENDOFWHOIS_MSG,
+                                 Client_ID(from), Req->argv[Req->argc - 1]);
 } /* IRC_WHOIS */