]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
made deleg work with all resource records (not only A records)
authorjessevz <jessevanzutphen7@hotmail.com>
Wed, 19 Jun 2024 10:28:44 +0000 (12:28 +0200)
committerjessevz <jessevanzutphen7@hotmail.com>
Wed, 19 Jun 2024 10:28:44 +0000 (12:28 +0200)
iterator/iterator.c
iterator/iterator.h

index 27677729dd3a35610c8144d9e9f444f69df1ebfa..80c694bb2e5da7c2697a6df5aecda33123380d89 100644 (file)
@@ -2586,6 +2586,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq,
         memcpy(iq->deleg_original_qname, qstate->qinfo.qname, iq->qchase.qname_len);
         iq->deleg_original_qname_len = iq->qchase.qname_len;
         log_err("JESSE: Copied original qname: %s", iq->deleg_original_qname);
+        iq->original_query = iq->qchase.qtype;
     } else {
         memcpy(qstate->qinfo.qname, iq->deleg_original_qname, iq->deleg_original_qname_len);
         memcpy(iq->qchase.qname, iq->deleg_original_qname, iq->deleg_original_qname_len);
@@ -3885,10 +3886,10 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq,
                 * because, clearly, the next target must be tried. */
         log_err("JESSE: the qtype of the THROWAWAY is: %d ", iq->qchase.qtype);
         iq->qchase.qname = iq->deleg_original_qname;
-        iq->qchase.qtype = 1;
+        iq->qchase.qtype = iq->original_query;
         iq->qchase.qname_len = iq->deleg_original_qname_len;
 
-        iq->qinfo_out.qtype = 1;
+        iq->qinfo_out.qtype = iq->original_query;
         iq->qinfo_out.qname = iq->deleg_original_qname;
         iq->qinfo_out.qname_len = iq->deleg_original_qname_len;
 
index 1b36d8676ce7436cd3b86059bffa6d05590c4854..4302a8d11dcec45a097ab9ff909648d90fb14c15 100644 (file)
@@ -435,6 +435,7 @@ struct iter_qstate {
     int deleg_state;
     uint8_t* deleg_original_qname;
     size_t deleg_original_qname_len;
+    uint16_t original_query;
 
        /**
         * The query info that is sent upstream. Will be a subset of qchase