]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/dnsqueue.cpp
Moved tons of stuff into class ServerConfig
[user/henk/code/inspircd.git] / src / dnsqueue.cpp
index 2d123a4198b7f5034a353f21273c3c4becf17bbf..ce309a6880f817c73d467cd29142fa7c9a4e433d 100644 (file)
@@ -43,7 +43,6 @@ using namespace std;
 #include <time.h>
 #include <sys/types.h>
 #include <sys/socket.h>
-#include <sys/poll.h>
 #include <sys/time.h>
 #include <netinet/in.h>
 #include <string.h>
@@ -53,9 +52,7 @@ using namespace std;
 #include "socketengine.h"
 
 extern SocketEngine* SE;
-typedef nspace::hash_map<std::string, userrec*, nspace::hash<string>, irc::StrHashComp> user_hash;
-extern user_hash clientlist;
-extern char DNSServer[MAXBUF];
+extern ServerConfig* Config;
 
 class Lookup;
 
@@ -90,7 +87,7 @@ public:
                userrec* usr = Find(nick);
                if (usr)
                {
-                       resolver1.SetNS(std::string(DNSServer));
+                       resolver1.SetNS(std::string(Config->DNSServer));
                        if (!resolver1.ReverseLookup(std::string(usr->host)))
                        {
                                return false;
@@ -98,9 +95,11 @@ public:
                        strlcpy(u,nick.c_str(),NICKMAX);
 
                        /* ASSOCIATE WITH DNS LOOKUP LIST */
-                       dnslist[resolver1.GetFD()] = this;
-                       
-                       return true;
+                       if (resolver1.GetFD() != -1)
+                       {
+                               dnslist[resolver1.GetFD()] = this;
+                               return true;
+                       }
                }
                return false;
        }
@@ -157,7 +156,11 @@ public:
                        {
                                usr = Find(u);
                                if ((usr) && (usr->dns_done))
+                               {
+                                       if (resolver1.GetFD() != -1)
+                                               dnslist[resolver1.GetFD()] = NULL;
                                        return true;
+                               }
                                if (resolver1.GetFD() != -1)
                                {
                                        dnslist[resolver1.GetFD()] = NULL;
@@ -173,7 +176,7 @@ public:
                                        if (hostname != "")
                                        {
                                                resolver2.ForwardLookup(hostname);
-                                               if (resolver2.GetFD())
+                                               if (resolver2.GetFD() != -1)
                                                        dnslist[resolver2.GetFD()] = this;
                                        }
                                }
@@ -258,6 +261,10 @@ void dns_poll(int fdcheck)
                 */
                return;
        }
-       log(DEBUG,"DNS: Received an event for an invalid descriptor!");
+       /* This FD doesnt belong here, lets be rid of it,
+        * just to be safe so we dont get any more events
+        * about it.
+        */
+       SE->DelFd(fdcheck);
 }