From: jessevz Date: Wed, 19 Jun 2024 10:28:44 +0000 (+0200) Subject: made deleg work with all resource records (not only A records) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=98b899608ef142d5e3bf8268f053b42bdf5562fa;p=thirdparty%2Funbound.git made deleg work with all resource records (not only A records) --- diff --git a/iterator/iterator.c b/iterator/iterator.c index 27677729d..80c694bb2 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -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; diff --git a/iterator/iterator.h b/iterator/iterator.h index 1b36d8676..4302a8d11 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h @@ -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