]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
kr_request: remove ::additional
authorVladimír Čunát <vladimir.cunat@nic.cz>
Mon, 27 Aug 2018 15:10:50 +0000 (17:10 +0200)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Tue, 23 Jul 2019 09:00:29 +0000 (11:00 +0200)
Somehow I didn't notice this field when adding ::add_selected.
We probably never put anything into answer's ADDITIONAL,
so noone's noticed a problem until now.

NEWS
daemon/lua/kres-gen.lua
daemon/lua/kres-gen.sh
lib/resolve.c
lib/resolve.h
lib/utils.h

diff --git a/NEWS b/NEWS
index 56320ddadad9a1608647fc0615d9f082d4c1a907..77ae26b7f43b12bc34d5322d7af78d754f5c1e8c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,12 @@ Bugfixes
 
 - tls_client: fix issue with TLS session resumption (#489)
 
+Module API changes
+------------------
+- kr_request::add_selected is now really put into answer,
+  instead of the "duplicate" ::additional field (#490)
+
+
 Knot Resolver 4.1.0 (2019-07-10)
 ================================
 
index 2565ac3f1ae1ea859067aee54568aad749f66b43..07647cc84f8c9646836ea3f0903e8182b0f1240f 100644 (file)
@@ -126,11 +126,6 @@ struct kr_qflags {
        _Bool NO_NS_FOUND : 1;
        _Bool PKT_IS_SANE : 1;
 };
-typedef struct {
-       knot_rrset_t **at;
-       size_t len;
-       size_t cap;
-} rr_array_t;
 struct ranked_rr_array_entry {
        uint32_t qry_uid;
        uint8_t rank;
@@ -192,7 +187,6 @@ struct kr_request {
        ranked_rr_array_t answ_selected;
        ranked_rr_array_t auth_selected;
        ranked_rr_array_t add_selected;
-       rr_array_t additional;
        _Bool answ_validated;
        _Bool auth_validated;
        uint8_t rank;
index b0ac3de15dbc090eb6085e0e45bca565ff5b9ad9..c28d346f2453d0f49e17f609e9dd995b124dee78 100755 (executable)
@@ -103,7 +103,6 @@ ${CDEFS} ${LIBKRES} types <<-EOF
        trie_t
        # libkres
        struct kr_qflags
-       rr_array_t
        struct ranked_rr_array_entry
        ranked_rr_array_entry_t
        ranked_rr_array_t
index f80f92a4071e6ded8098eabf058bbd1e052951e2..6b411f770f671795e515031e31ca144a8bb79235 100644 (file)
@@ -461,18 +461,6 @@ static int answer_prepare(struct kr_request *req, knot_pkt_t *query)
        return kr_ok();
 }
 
-/** @return error code, ignoring if forced to truncate the packet. */
-static int write_extra_records(const rr_array_t *arr, uint16_t reorder, knot_pkt_t *answer)
-{
-       for (size_t i = 0; i < arr->len; ++i) {
-               int err = knot_pkt_put_rotate(answer, 0, arr->at[i], reorder, KNOT_PF_NOTRUNC);
-               if (err != KNOT_EOK) {
-                       return err == KNOT_ESPACE ? kr_ok() : kr_error(err);
-               }
-       }
-       return kr_ok();
-}
-
 /**
  * @param all_secure optionally &&-combine security of written RRs into its value.
  *                  (i.e. if you pass a pointer to false, it will always remain)
@@ -658,7 +646,8 @@ static void answer_finalize(struct kr_request *request)
            || write_extra_ranked_records(&request->auth_selected, reorder,
                                        answer, &secure, NULL)
            || knot_pkt_begin(answer, KNOT_ADDITIONAL)
-           || write_extra_records(&request->additional, reorder, answer)
+           || write_extra_ranked_records(&request->add_selected, reorder,
+                                       answer, NULL/*not relevant to AD*/, NULL)
            || answer_append_edns(request)
           )
        {
@@ -737,7 +726,6 @@ int kr_resolve_begin(struct kr_request *request, struct kr_context *ctx, knot_pk
        request->options = ctx->options;
        request->state = KR_STATE_CONSUME;
        request->current_query = NULL;
-       array_init(request->additional);
        array_init(request->answ_selected);
        array_init(request->auth_selected);
        array_init(request->add_selected);
index df583a9380f79e0563ae7ca6ac2a9425aa2af145..728466f20534b38321f6232340810c6ac16154c7 100644 (file)
@@ -214,7 +214,6 @@ struct kr_request {
        ranked_rr_array_t answ_selected;
        ranked_rr_array_t auth_selected;
        ranked_rr_array_t add_selected;
-       rr_array_t additional;
        bool answ_validated; /**< internal to validator; beware of caching, etc. */
        bool auth_validated; /**< see answ_validated ^^ ; TODO */
 
index 40ebfade3db02f2b1b69a8f988ae3838150e0d93..61127ce0bb5c0e529f4a8a8518d4f0adba94f395 100644 (file)
@@ -187,7 +187,6 @@ static inline long time_diff(struct timeval *begin, struct timeval *end) {
 /** @cond internal Array types */
 struct kr_context;
 
-typedef array_t(knot_rrset_t *) rr_array_t;
 struct ranked_rr_array_entry {
        uint32_t qry_uid;
        uint8_t rank; /**< enum kr_rank */