]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/dnsqueue.cpp
EXPERIMENTAL new socket engine code
[user/henk/code/inspircd.git] / src / dnsqueue.cpp
index 5562b2299bfaa1acac15e13839bc83d068df6c4d..99f32988e55f382d60f1a2aaee2fbcc37ed9c843 100644 (file)
@@ -104,6 +104,7 @@ public:
        void Reset()
        {
                strcpy(u,"");
+               log(DEBUG,"Reset class Lookup");
        }
 
        ~Lookup()
@@ -119,10 +120,14 @@ public:
                        log(DEBUG,"New Lookup class for %s with DNSServer set to '%s'",nick.c_str(),DNSServer);
                        resolver1.SetNS(std::string(DNSServer));
                        if (!resolver1.ReverseLookup(std::string(usr->host)))
+                       {
+                               log(DEBUG,"ReverseLookup didnt return true, we're outta here");
                                return false;
+                       }
                        strlcpy(u,nick.c_str(),NICKMAX);
                        return true;
                }
+               log(DEBUG,"We couldnt find that user");
                return false;
        }
 
@@ -130,10 +135,12 @@ public:
        {
                if (hostname != "")
                {
+                       log(DEBUG,"Doing forward lookup here with host %s",hostname.c_str());
                        // doing forward lookup
                        userrec* usr = NULL;
                        if (resolver2.HasResult())
                        {
+                               log(DEBUG,"resolver2 has result");
                                if (resolver2.GetFD() != 0)
                                {
                                        std::string ip = resolver2.GetResultIP();
@@ -144,6 +151,7 @@ public:
                                        {
                                                if (usr->registered > 3)
                                                {
+                                                       log(DEBUG,"Point 1: Returning true as usr->dns_done is true");
                                                        usr->dns_done = true;
                                                        return true;
                                                }
@@ -168,10 +176,15 @@ public:
                                {
                                        usr = Find(u);
                                        if (usr)
+                                       {
+                                               log(DEBUG,"Point 2: Returning true");
                                                usr->dns_done = true;
+                                       }
                                        return true;
                                }
                        }
+                       log(DEBUG,"Returning false in forward");
+                       return false;
                }
                else
                {
@@ -179,23 +192,30 @@ public:
                        userrec* usr = NULL;
                        if (resolver1.HasResult())
                        {
+                               usr = Find(u);
+                               if ((usr) && (usr->dns_done))
+                                       return true;
                                if (resolver1.GetFD() != 0)
                                {
                                        hostname = resolver1.GetResult();
-                                       log(DEBUG,"REVERSE RESULT! %s",hostname.c_str());
-                                       usr = Find(u);
                                        if (usr)
                                        {
-                                               if (usr->registered > 3)
+                                               if ((usr->registered > 3) || (hostname == ""))
                                                {
+                                                       log(DEBUG,"Hostname is blank and user->registered > 3, returning true and setting done");
                                                        usr->dns_done = true;
                                                        return true;
                                                }
                                        }
-                                       resolver2.ForwardLookup(hostname);
+                                       if (hostname != "")
+                                       {
+                                               log(DEBUG,"Starting forwardlookup now for host '%s'...",hostname.c_str());
+                                               resolver2.ForwardLookup(hostname);
+                                       }
                                }
                        }
                }
+               log(DEBUG,"Returning false");
                return false;
        }