]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
modules/hints: fixed AAAA processing (swapped rclass/rtype)
authorMarek Vavruša <marek.vavrusa@nic.cz>
Sat, 27 Jun 2015 18:17:11 +0000 (20:17 +0200)
committerMarek Vavruša <marek.vavrusa@nic.cz>
Sat, 27 Jun 2015 18:17:11 +0000 (20:17 +0200)
modules/hints/hints.c

index 5e5d4d7e187f7b22601dd5f312aadd3f7f9ed44b..c99d170165830a44e70339fcff3c96a52474d2f3 100644 (file)
@@ -70,14 +70,17 @@ static int answer_query(knot_pkt_t *pkt, pack_t *addr_set, struct kr_query *qry)
                addr = pack_obj_next(addr);
        }
 
-       /* Update packet question */
-       if (!knot_dname_is_equal(knot_pkt_qname(pkt), qname)) {
-               KR_PKT_RECYCLE(pkt);
-               knot_pkt_put_question(pkt, qname, rrtype, rrclass);
+       int ret = kr_error(ENOENT);
+       if (!knot_rrset_empty(&rr)) {
+               /* Update packet question */
+               if (!knot_dname_is_equal(knot_pkt_qname(pkt), qname)) {
+                       KR_PKT_RECYCLE(pkt);
+                       knot_pkt_put_question(pkt, qname, rrclass, rrtype);
+               }
+               /* Append to packet */
+               ret = knot_pkt_put(pkt, KNOT_COMPR_HINT_QNAME, &rr, KNOT_PF_FREE);
        }
-
-       /* Append to packet */
-       int ret = knot_pkt_put(pkt, KNOT_COMPR_HINT_NONE, &rr, KNOT_PF_FREE);
+       /* Clear RR if failed */
        if (ret != 0) {
                knot_rrset_clear(&rr, &pkt->mm);
        }