Answer CNAME queries correctly.

This commit is contained in:
Simon Kelley
2012-04-16 17:26:19 +01:00
parent e46164e0bd
commit d1c759c5c1
2 changed files with 20 additions and 0 deletions

View File

@@ -89,6 +89,9 @@ version 2.61
and the OpenStack team for the suggestion. and the OpenStack team for the suggestion.
Updated French translation. Thanks to Gildas Le Nadan. Updated French translation. Thanks to Gildas Le Nadan.
Give correct from-cache answers to explict CNAME queries.
Thanks to Rob Zwissler for spotting this.
version 2.60 version 2.60

View File

@@ -1639,6 +1639,23 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen,
} while ((crecp = cache_find_by_name(crecp, name, now, flag | F_CNAME))); } while ((crecp = cache_find_by_name(crecp, name, now, flag | F_CNAME)));
} }
} }
if (qtype == T_CNAME || qtype == T_ANY)
{
if ((crecp = cache_find_by_name(NULL, name, now, F_CNAME)) &&
(qtype == T_CNAME || (crecp->flags & (F_HOSTS | F_DHCP))))
{
ans = 1;
if (!dryrun)
{
log_query(crecp->flags, name, NULL, record_source(crecp->uid));
if (add_resource_record(header, limit, &trunc, nameoffset, &ansp,
crec_ttl(crecp, now), &nameoffset,
T_CNAME, C_IN, "d", cache_get_name(crecp->addr.cname.cache)))
anscount++;
}
}
}
if (qtype == T_MX || qtype == T_ANY) if (qtype == T_MX || qtype == T_ANY)
{ {