*/
#include "dns/dnsresolver.h"
+#include <algorithm>
#include <iostream>
#include <boost/assert.hpp>
using boost::net::dns::resource_base_t;
using boost::net::dns::message;
using boost::net::dns::rr_list_t;
+using boost::net::dns::type_t;
using boost::shared_ptr;
using I2n::Logger::GlobalLogger;
return true;
}
- GlobalLogger.info() << "Resolved IP(s) for host : "
- << HostDnsAddress << endl;
+ GlobalLogger.info() << "Resolved IP(s) for host : " << HostDnsAddress << endl;
try
{
- rr_list_t answers_list = fill_answers_list( HostDnsAddress, NameServer);
+ rr_list_t answers_list = fill_answers_list( HostDnsAddress, NameServer, boost::net::dns::type_a );
size_t resolved_ip_count = answers_list.size();
if ( resolved_ip_count < 1 )
size_t list_size_before = ResolvedHostAddressList.size();
HostAddress host_address = ResolvedHostAddressList.front();
- ResolvedHostAddressList.pop_front();
string destination_ip = host_address.get_ip();
uint32_t ttl = host_address.get_ttl().get_updated_value();
- ResolvedHostAddressList.push_back( host_address );
+
+ rotate( ResolvedHostAddressList.begin(), ++ResolvedHostAddressList.begin(), ResolvedHostAddressList.end() );
size_t list_size_after = ResolvedHostAddressList.size();
}
/**
- * @brief Check if hostname is already an IPv4 address. Will insert it into
+ * @brief Check if hostname is already an IP address. Will insert it into
* #ResolvedHostAddressList.
*
* @param host_dns_address
- * @return bool True if already an ip, false if not
+ * @return bool @c true if the address is already an IP, @c false if not.
**/
bool DnsResolver::handle_ip_address()
{
rr_list_t DnsResolver::fill_answers_list(
const string &host_dns_address,
- const string &name_server
+ const string &name_server,
+ const type_t message_type
) const
{
BOOST_ASSERT( !host_dns_address.empty() );
address nameServer( address::from_string( name_server ) );
boost::net::dns::resolve resolver;
resolver.addServer( nameServer );
- message dns_message( host_dns_address, boost::net::dns::type_a );
+
+ message dns_message( host_dns_address, message_type );
message& dns_packet = resolver.query( dns_message );
+
// Note: perform a copy of each element from one vector to the other, do not reference
return *dns_packet.answers();
}