X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fdnsqueue.cpp;h=ce309a6880f817c73d467cd29142fa7c9a4e433d;hb=cc0cd720c6910e63834fdf9d82399637cda37786;hp=2d123a4198b7f5034a353f21273c3c4becf17bbf;hpb=d7522cd852f6d1821b00774441762f73403341fe;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/dnsqueue.cpp b/src/dnsqueue.cpp index 2d123a419..ce309a688 100644 --- a/src/dnsqueue.cpp +++ b/src/dnsqueue.cpp @@ -43,7 +43,6 @@ using namespace std; #include #include #include -#include #include #include #include @@ -53,9 +52,7 @@ using namespace std; #include "socketengine.h" extern SocketEngine* SE; -typedef nspace::hash_map, 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); }