From 69bf6e0bd79d35a5380cfbfb0a72400f44748033 Mon Sep 17 00:00:00 2001 From: Guilherme Maciel Ferreira Date: Sun, 18 Mar 2012 18:11:37 -0300 Subject: [PATCH] Fix: do not assert when the address has more than one CNAME. --- src/dns/dnsresolver.cpp | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/src/dns/dnsresolver.cpp b/src/dns/dnsresolver.cpp index 4ef6969..35492d9 100644 --- a/src/dns/dnsresolver.cpp +++ b/src/dns/dnsresolver.cpp @@ -250,6 +250,8 @@ void DnsResolver::fill_resolved_ip_list( BOOST_ASSERT( 1 <= answers_list.size() ); BOOST_ASSERT( resolved_host_address_list != NULL ); + size_t cname_count = 0; + BOOST_FOREACH( shared_ptr resource_record, answers_list ) { if ( resource_record ) @@ -264,6 +266,9 @@ void DnsResolver::fill_resolved_ip_list( // 'AAAA' resource records carry IPv6 addresses append_resolved_ipv6( resource_record, resolved_host_address_list ); break; + case boost::net::dns::type_cname: + // 'CNAME' resource records that carry aliases + cname_count++; default: // other types of resource records break; @@ -274,7 +279,7 @@ void DnsResolver::fill_resolved_ip_list( size_t answer_list_size = answers_list.size(); size_t resolve_host_list_size = resolved_host_address_list->size(); bool size_equal = ( resolve_host_list_size == answer_list_size ); - bool size_equal_minus_cname = ( resolve_host_list_size == ( answer_list_size - 1 ) ); + bool size_equal_minus_cname = ( resolve_host_list_size == ( answer_list_size - cname_count ) ); BOOST_ASSERT( size_equal || size_equal_minus_cname ); } -- 1.7.1