From 93bafe619d3d41575f1d70ab50052eba7c0fa6fe Mon Sep 17 00:00:00 2001 From: Simon Kelley Date: Mon, 21 Oct 2013 21:19:34 +0100 Subject: [PATCH] Fix CNAME botch in auth code, also set RA flag for local queries. --- src/auth.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/auth.c b/src/auth.c index 5646ca3..91b5a71 100644 --- a/src/auth.c +++ b/src/auth.c @@ -394,7 +394,7 @@ size_t answer_auth(struct dns_header *header, char *limit, size_t qlen, time_t n } found = 1; if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, - daemon->auth_ttl, NULL, + daemon->auth_ttl, &nameoffset, T_CNAME, C_IN, "d", name)) anscount++; @@ -782,8 +782,17 @@ size_t answer_auth(struct dns_header *header, char *limit, size_t qlen, time_t n /* done all questions, set up header and return length of result */ /* clear authoritative and truncated flags, set QR flag */ header->hb3 = (header->hb3 & ~(HB3_AA | HB3_TC)) | HB3_QR; - /* clear RA flag */ - header->hb4 &= ~HB4_RA; + + if (local_query) + { + /* set RA flag */ + header->hb4 |= HB4_RA; + } + else + { + /* clear RA flag */ + header->hb4 &= ~HB4_RA; + } /* authoritive */ if (auth)