]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/irc-info.c
Remove imp.h and exp.h header files
[ngircd-alex.git] / src / ngircd / irc-info.c
index f1d02711b35cfba3de103bfa836c366a40ad21c8..6a4057292f42820547afb9d3a8ff5b01171eb676 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors.
+ * Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -16,7 +16,6 @@
  * IRC info commands
  */
 
-#include "imp.h"
 #include <assert.h>
 #include <errno.h>
 #include <stdio.h>
@@ -43,7 +42,6 @@
 #include "client-cap.h"
 #include "op.h"
 
-#include "exp.h"
 #include "irc-info.h"
 
 /* Local functions */
@@ -189,7 +187,7 @@ IRC_WHO_Channel(CLIENT *Client, CHANNEL *Chan, bool OnlyOps)
                }
        }
 
-       /* If there are a lot of clients, augment penalty a bit */
+       /* If there are a lot of clients, increase the penalty a bit */
        if (count > MAX_RPL_WHO)
                IRC_SetPenalty(Client, 1);
 
@@ -401,6 +399,13 @@ IRC_WHOIS_SendReply(CLIENT *Client, CLIENT *from, CLIENT *c)
                                Client_ID(from), Client_ID(c)))
                return DISCONNECTED;
 
+       /* Account name metadata? */
+       if (Client_AccountName(c) &&
+           !IRC_WriteStrClient(from, RPL_WHOISLOGGEDIN_MSG,
+                               Client_ID(from), Client_ID(c),
+                               Client_AccountName(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')))) {
@@ -1099,10 +1104,19 @@ IRC_VERSION( CLIENT *Client, REQUEST *Req )
        }
 
        /* send version information */
-       return IRC_WriteStrClient(Client, RPL_VERSION_MSG, Client_ID(prefix),
-                                 PACKAGE_NAME, PACKAGE_VERSION,
-                                 NGIRCd_DebugLevel, Conf_ServerName,
-                                 NGIRCd_VersionAddition);
+       if (!IRC_WriteStrClient(Client, RPL_VERSION_MSG, Client_ID(prefix),
+                               PACKAGE_NAME, PACKAGE_VERSION,
+                               NGIRCd_DebugLevel, Conf_ServerName,
+                               NGIRCd_VersionAddition))
+               return DISCONNECTED;
+
+#ifndef STRICT_RFC
+       /* send RPL_ISUPPORT(005) numerics */
+       if (!IRC_Send_ISUPPORT(prefix))
+               return DISCONNECTED;
+#endif
+
+       return CONNECTED;
 } /* IRC_VERSION */
 
 /**
@@ -1233,6 +1247,7 @@ IRC_WHOIS( CLIENT *Client, REQUEST *Req )
                        continue;
                }
                got_wildcard = true;
+               /* Increase penalty for wildcard queries */
                IRC_SetPenalty(Client, 3);
 
                for (c = Client_First(); c; c = Client_Next(c)) {
@@ -1538,6 +1553,10 @@ IRC_Send_NAMES(CLIENT * Client, CHANNEL * Chan)
 GLOBAL bool
 IRC_Send_ISUPPORT(CLIENT * Client)
 {
+       if (Conf_Network[0] && !IRC_WriteStrClient(Client, RPL_ISUPPORTNET_MSG,
+                                                  Client_ID(Client),
+                                                  Conf_Network))
+               return DISCONNECTED;
        if (!IRC_WriteStrClient(Client, RPL_ISUPPORT1_MSG, Client_ID(Client),
                                CHANTYPES, CHANTYPES, Conf_MaxJoins))
                return DISCONNECTED;