X-Git-Url: https://git.distorted.org.uk/~mdw/adns/blobdiff_plain/ebf4877a99a025de95a78591445677e8014679da..594377f257454efe6b38e68f2d5d367e4bfe2521:/src/reply.c diff --git a/src/reply.c b/src/reply.c index 8da0bf2..4dec0e3 100644 --- a/src/reply.c +++ b/src/reply.c @@ -167,7 +167,14 @@ void adns__procdgram(adns_state ads, const byte *dgram, int dglen, if (qu->flags & adns_qf_cname_forbid) { adns__query_fail(qu,adns_s_prohibitedcname); return; - } else if (!qu->cname_dgram) { /* Ignore second and subsequent CNAMEs */ + } else if (qu->cname_dgram) { /* Ignore second and subsequent CNAME(s) */ + adns__debug(ads,serv,qu,"ignoring duplicate CNAME (%s, as well as %s)", + adns__diag_domain(ads,serv,qu, &qu->vb, dgram,dglen,rdstart), + qu->answer->cname); + } else if (wantedrrs) { /* Ignore CNAME(s) after RR(s). */ + adns__debug(ads,serv,qu,"ignoring CNAME (to %s) coexisting with RR", + adns__diag_domain(ads,serv,qu, &qu->vb, dgram,dglen,rdstart)); + } else { qu->cname_begin= rdstart; qu->cname_dglen= dglen; st= adns__parse_domain(ads,serv,qu, &qu->vb, @@ -190,10 +197,6 @@ void adns__procdgram(adns_state ads, const byte *dgram, int dglen, * TCP. If there is no truncation we can use the whole answer if * it contains the relevant info. */ - } else { - adns__debug(ads,serv,qu,"ignoring duplicate CNAME (%s, as well as %s)", - adns__diag_domain(ads,serv,qu, &qu->vb, dgram,dglen,rdstart), - qu->answer->cname); } } else if (rrtype == (qu->typei->type & adns__rrt_typemask)) { wantedrrs++;