]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/dnsqueue.cpp
Add userrec::HasMode, fix some typos.
[user/henk/code/inspircd.git] / src / dnsqueue.cpp
index 3858b16aa29c422436ae50fa44291ef6dfa467a7..975884796f7dd24f9963c58dfb98cc77b9257077 100644 (file)
  * ---------------------------------------------------
  */
 
-using namespace std;
-
 #include "inspircd_config.h"
 #include "inspircd.h"
-#include "inspircd_io.h"
+#include "configreader.h"
 #include <unistd.h>
 #include <sys/errno.h>
 #include <sys/ioctl.h>
 #include <sys/utsname.h>
-#include <cstdio>
-#include <time.h>
 #include <string>
-#ifdef GCC3
-#include <ext/hash_map>
-#else
-#include <hash_map>
-#endif
-#include <map>
-#include <sstream>
-#include <vector>
-#include <deque>
 #include "users.h"
 #include "globals.h"
 #include "inspstring.h"
 #include "dnsqueue.h"
-#include <time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-#include <netinet/in.h>
-#include <string.h>
 #include "dns.h"
 #include "helperfuncs.h"
 #include "hashcomp.h"
 #include "socketengine.h"
+#include "socket.h"
 
 extern ServerConfig* Config;
 extern InspIRCd* ServerInstance;
 
-address_cache addrcache;
-
 class Lookup;
 
 Lookup* dnslist[MAX_DESCRIPTORS];
@@ -87,7 +67,7 @@ public:
        bool DoLookup(std::string nick)
        {
                hostname = "";
-               userrec* usr = Find(nick.c_str());
+               userrec* usr = Find(nick);
                if (usr)
                {
                        resolver1.SetNS(std::string(Config->DNSServer));
@@ -95,7 +75,7 @@ public:
                        {
                                return false;
                        }
-                       strlcpy(u,nick.c_str(),NICKMAX);
+                       strlcpy(u,nick.c_str(),NICKMAX-1);
 
                        /* ASSOCIATE WITH DNS LOOKUP LIST */
                        if (resolver1.GetFD() != -1)
@@ -129,10 +109,10 @@ public:
                                                }
                                                if ((hostname != "") && (usr->registered != 7))
                                                {
-                                                       if (std::string((char*)inet_ntoa(usr->ip4)) == ip)
+                                                       if ((std::string((char*)inet_ntoa(usr->ip4)) == ip) && (hostname.length() < 65))
                                                        {
-                                                               strlcpy(usr->host,hostname.c_str(),MAXBUF);
-                                                               strlcpy(usr->dhost,hostname.c_str(),MAXBUF);
+                                                               strlcpy(usr->host,hostname.c_str(),64);
+                                                               strlcpy(usr->dhost,hostname.c_str(),64);
                                                                /*address_cache::iterator address = addrcache.find(usr->ip4);
                                                                if (address == addrcache.end())
                                                                {
@@ -207,10 +187,10 @@ public:
        }
 };
 
-bool lookup_dns(std::string nick)
+bool lookup_dns(const std::string &nick)
 {
        /* First attempt to find the nickname */
-       userrec* u = Find(nick.c_str());
+       userrec* u = Find(nick);
        if (u)
        {
                /* Check the cache */
@@ -267,7 +247,7 @@ void dns_poll(int fdcheck)
                                 * from the socket engine, as dns.cpp tracks it
                                 * for us if we are in single-threaded country.
                                 */
-                               delete x;
+                               DELETE(x);
                        }
                }
                else
@@ -275,7 +255,7 @@ void dns_poll(int fdcheck)
                        /* its fd is dodgy, the dns code probably
                         * bashed it due to error. Free the class.
                         */
-                       delete x;
+                       DELETE(x);
                }
                /* If we got down here, the dns lookup was valid, BUT,
                 * its still in progress. Be patient, and wait for
@@ -290,4 +270,3 @@ void dns_poll(int fdcheck)
        if (ServerInstance && ServerInstance->SE)
                ServerInstance->SE->DelFd(fdcheck);
 }
-