]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
fixup! add FORCE_PADDING option for requests
authorVladimír Čunát <vladimir.cunat@nic.cz>
Mon, 20 May 2019 07:55:01 +0000 (09:55 +0200)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Mon, 20 May 2019 07:56:59 +0000 (09:56 +0200)
lib/resolve.c

index f7a0a41c02ca4bc27f760acd7c79ecf6e5666f7b..391e8fb4c85a72854c058e8b9ac688b4c0d89d72 100644 (file)
@@ -417,6 +417,11 @@ 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);
@@ -427,7 +432,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 (req->qsource.flags.tls) {
+       if (want_padding(req)) {
                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
@@ -526,8 +531,7 @@ static int answer_padding_maybe(struct kr_request *request)
                assert(false);
                return kr_error(EINVAL);
        }
-       const bool want_pad = request->qsource.flags.tls;
-       if (!want_pad) return kr_ok();
+       if (!want_padding(request)) return kr_ok();
 
        int32_t padding = request->ctx->tls_padding;
        knot_pkt_t *answer = request->answer;