]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
WIP: sets PADDING_REQUIRED flag for every request
authorIvana Krumlová <ivana.krumlova@nic.cz>
Thu, 11 Jul 2019 12:47:42 +0000 (14:47 +0200)
committerIvana Krumlová <ivana.krumlova@nic.cz>
Thu, 11 Jul 2019 12:47:42 +0000 (14:47 +0200)
daemon/lua/kres-gen.lua
lib/resolve.c
lib/rplan.h

index 9ad6d1add7a6c3c80ce8c8490b30d899d493a52a..5e121f92b1473013d283acfaaf84b57ecfd7d57d 100644 (file)
@@ -120,7 +120,7 @@ struct kr_qflags {
        _Bool DNS64_MARK : 1;
        _Bool CACHE_TRIED : 1;
        _Bool NO_NS_FOUND : 1;
-       _Bool FORCE_PADDING : 1;
+       _Bool PADDING_REQUIRED : 1;
 };
 typedef struct {
        knot_rrset_t **at;
index 391e8fb4c85a72854c058e8b9ac688b4c0d89d72..3dbb2d2debf96196e27b2bb3d70da7b3b0eee355 100644 (file)
@@ -417,11 +417,6 @@ static int edns_erase_and_reserve(knot_pkt_t *pkt)
        return knot_pkt_reserve(pkt, len);
 }
 
-static inline bool want_padding(const struct kr_request *req)
-{
-       return req->qsource.flags.tls || req->options.FORCE_PADDING;
-}
-
 static int edns_create(knot_pkt_t *pkt, knot_pkt_t *template, struct kr_request *req)
 {
        pkt->opt_rr = knot_rrset_copy(req->ctx->opt_rr, &pkt->mm);
@@ -432,7 +427,7 @@ static int edns_create(knot_pkt_t *pkt, knot_pkt_t *template, struct kr_request
                wire_size += KR_COOKIE_OPT_MAX_LEN;
        }
 #endif /* defined(ENABLE_COOKIES) */
-       if (want_padding(req)) {
+       if (req->options.PADDING_REQUIRED) {
                if (req->ctx->tls_padding == -1)
                        /* FIXME: we do not know how to reserve space for the
                         * default padding policy, since we can't predict what
@@ -531,7 +526,7 @@ static int answer_padding_maybe(struct kr_request *request)
                assert(false);
                return kr_error(EINVAL);
        }
-       if (!want_padding(request)) return kr_ok();
+       if (!request->options.PADDING_REQUIRED) return kr_ok();
 
        int32_t padding = request->ctx->tls_padding;
        knot_pkt_t *answer = request->answer;
@@ -717,6 +712,7 @@ int kr_resolve_begin(struct kr_request *request, struct kr_context *ctx, knot_pk
        request->ctx = ctx;
        request->answer = answer;
        request->options = ctx->options;
+       request->options.PADDING_REQUIRED = true; //WIP: this sets the flag for every request
        request->state = KR_STATE_CONSUME;
        request->current_query = NULL;
        array_init(request->additional);
index e98ee3e8cab54b0770bdb22f0538caf0cb19a989..f013d76e02d2f178707b815d7f61a43d3bc27df3 100644 (file)
@@ -64,7 +64,7 @@ struct kr_qflags {
        bool DNS64_MARK : 1;     /**< Internal mark for dns64 module. */
        bool CACHE_TRIED : 1;    /**< Internal to cache module. */
        bool NO_NS_FOUND : 1;    /**< No valid NS found during last PRODUCE stage. */
-       bool FORCE_PADDING : 1;  /**< Force use of EDNS(0) padding even if TLS isn't used.  */
+       bool PADDING_REQUIRED : 1;  /**< Force use of EDNS(0) padding even if TLS isn't used.  */
 };
 
 /** Combine flags together.  This means set union for simple flags. */