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);
}
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);
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
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,