finished self-implementation of DNS resolver recursion; will now remove all that!
[pingcheck] / src / dns / dnsmaster.cpp
index 0346fc5..5b0a1ce 100644 (file)
@@ -103,7 +103,7 @@ ResolverItem& DnsMaster::get_resolver_for( const std::string &hostname,
                                            const PingProtocol &ping_protocol )
 {
     // find suitable DnsIpProtocol for ping protocol
-    DnsIpProtocol protocol = DnsMaster::ping2dns_protocol(ping_protocol);
+    DnsIpProtocol protocol = ping2dns_protocol(ping_protocol);
     return get_resolver_for(hostname, protocol);
 }
 
@@ -111,15 +111,13 @@ ResolverItem& DnsMaster::get_resolver_for( const std::string &hostname,
 ResolverItem& DnsMaster::get_resolver_for(const std::string &hostname,
                                           const DnsIpProtocol &protocol)
 {
-    DnsMasterItem master = get_instance();
-
     // create key to ResolverMap
     resolver_key_type key(hostname, protocol);
-    if ( master->ResolverMap.count(key) == 0 )
+    if ( ResolverMap.count(key) == 0 )
     {   // need to create a resolver
 
         // check if it is an ip address, so can create a simple pseudo resolver
-        if ( master->is_ip(hostname) )
+        if ( is_ip(hostname) )
         {
             boost::asio::ip::address ip
                               = boost::asio::ip::address::from_string(hostname);
@@ -132,20 +130,21 @@ ResolverItem& DnsMaster::get_resolver_for(const std::string &hostname,
             ResolverItem new_resolver( new IpPseudoResolver(IoService,
                                                             hostname,
                                                             Cache) );
-            master->ResolverMap[key] = new_resolver;
+            ResolverMap[key] = new_resolver;
         }
         else
         {
-            GlobalLogger.info() << "Creating Resolver for host " << hostname;
+            GlobalLogger.info() << "DnsMaster: Creating Resolver for host "
+                << hostname << " and protocol " << to_string(protocol);
             ResolverItem new_resolver( new DnsResolver(IoService,
                                                        hostname,
                                                        protocol,
                                                        Cache,
                                                        DefaultNameServer) );
-            master->ResolverMap[key] = new_resolver;
+            ResolverMap[key] = new_resolver;
         }
     }
-    return master->ResolverMap[key];
+    return ResolverMap[key];
 }
 
 // create resolver but do not remember it in ResolverMap
@@ -153,6 +152,15 @@ ResolverItem DnsMaster::get_recursor_for(const std::string &hostname,
                                          const DnsIpProtocol &protocol,
                                     const boost::asio::ip::address &name_server)
 {
+    resolver_key_type key(hostname, protocol);
+    if ( !ResolverMap[key] )
+        GlobalLogger.warning() << "DnsMaster: requesting recursor for host "
+            << hostname << " and protocol " << to_string(protocol)
+            << " but have no regular resolver for this combination!";
+    else
+        GlobalLogger.warning() << "DnsMaster: requesting recursor for host "
+            << hostname << " and protocol " << to_string(protocol);
+
     ResolverItem new_resolver( new DnsResolver(IoService,
                                                hostname,
                                                protocol,