]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
kr_request: move ::has_tls to ::qsource.flags.tls
authorVladimír Čunát <vladimir.cunat@nic.cz>
Wed, 7 Nov 2018 15:40:56 +0000 (16:40 +0100)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Mon, 12 Nov 2018 15:53:16 +0000 (16:53 +0100)
We were quite inconsistent here.

daemon/lua/kres-gen.lua
daemon/worker.c
lib/resolve.c
lib/resolve.h

index 4d6c07ffde48bf84fe4d010980f31140468617ae..7f687c6fcd68bad08a6498618de914b92840fbde 100644 (file)
@@ -165,6 +165,7 @@ struct kr_rplan {
 };
 struct kr_request_qsource_flags {
        _Bool tcp : 1;
+       _Bool tls : 1;
 };
 struct kr_request {
        struct kr_context *ctx;
@@ -191,7 +192,6 @@ struct kr_request {
        _Bool auth_validated;
        uint8_t rank;
        struct kr_rplan rplan;
-       int has_tls;
        trace_log_f trace_log;
        trace_callback_f trace_finish;
        int vars_ref;
index 040dffce1cdfb23b9c76c9b03d0324a9f95f93a7..0a0c6b9ee527d152b8ab641ac24f7b968f85c444 100644 (file)
@@ -322,11 +322,13 @@ static struct request_ctx *request_create(struct worker_ctx *worker,
                        req->qsource.dst_addr = dst_addr;
                }
                req->qsource.flags.tcp = false;
+               req->qsource.flags.tls = false;
        } else if (handle->type == UV_TCP) {
                if (uv_tcp_getsockname((uv_tcp_t *)handle, dst_addr, &addr_len) == 0) {
                        req->qsource.dst_addr = dst_addr;
                }
                req->qsource.flags.tcp = true;
+               req->qsource.flags.tls = s && session_flags(s)->has_tls;
        }
 
        return ctx;
@@ -1354,7 +1356,6 @@ static int qr_task_step(struct qr_task *task,
        task->addrlist = NULL;
        task->addrlist_count = 0;
        task->addrlist_turn = 0;
-       req->has_tls = (ctx->source.session && session_flags(ctx->source.session)->has_tls);
 
        if (worker->too_many_open) {
                /* */
index 45f9f92903e3f80b8328e020e9f588e69948fd4f..90ea2f92d1c89c651132315e1864f0047e91d99a 100644 (file)
@@ -441,7 +441,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->has_tls) {
+       if (req->qsource.flags.tls) {
                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
@@ -642,7 +642,7 @@ static int answer_finalize(struct kr_request *request, int state)
        }
        /* Write EDNS information */
        if (answer->opt_rr) {
-               if (request->has_tls) {
+               if (request->qsource.flags.tls) {
                        if (answer_padding(request) != kr_ok()) {
                                return answer_fail(request);
                        }
index 598500171d5d927ff38c28636922861f6338c0fa..c8b89485a014202e25db4db4f8b9dd281e9df7c9 100644 (file)
@@ -177,7 +177,8 @@ struct kr_context
 /* Kept outside, because kres-gen.lua can't handle this depth
  * (and lines here were too long anyway). */
 struct kr_request_qsource_flags {
-       bool tcp:1; /**< true if the request is on tcp; only meaningful if (dst_addr). */
+       bool tcp:1; /**< true if the request is on TCP (or TLS); only meaningful if (dst_addr). */
+       bool tls:1; /**< true if the request is on TLS; only meaningful if (dst_addr). */
 };
 
 /**
@@ -226,7 +227,6 @@ struct kr_request {
        uint8_t rank;
 
        struct kr_rplan rplan;
-       int has_tls;
        trace_log_f trace_log; /**< Logging tracepoint */
        trace_callback_f trace_finish; /**< Request finish tracepoint */
        int vars_ref; /**< Reference to per-request variable table. LUA_NOREF if not set. */