]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
selection: asynchronously resolve NS name with each selection
authorŠtěpán Balážik <stepan.balazik@nic.cz>
Wed, 9 Sep 2020 14:47:03 +0000 (16:47 +0200)
committerŠtěpán Balážik <stepan.balazik@nic.cz>
Thu, 15 Oct 2020 11:22:22 +0000 (13:22 +0200)
daemon/worker.c
lib/selection_iter.c

index a9537d189036a7d8d55d91504a23edfbd1ad17ab..0ca5d100cf1ca878e0c8ac30efef4256620affda 100644 (file)
@@ -338,6 +338,7 @@ static struct request_ctx *request_create(struct worker_ctx *worker,
        req->selection_context.is_tls_capable = is_tls_capable;
        req->selection_context.is_tcp_connected = is_tcp_connected;
        req->selection_context.is_tcp_waiting = is_tcp_waiting;
+       req->selection_context.async_ns_resolution = async_ns_resolution;
 
        worker->stats.rconcurrent += 1;
 
index 9ec0f8e7dbed315da41c452b087bc0aa1064ad73..5628f2549fcc430f4638366c78f954e76136b576 100644 (file)
@@ -187,6 +187,11 @@ void iter_choose_transport(struct kr_query *qry, struct kr_transport **transport
 
        trie_it_free(it);
 
+       if (to_resolve) {
+               qry->request->selection_context.async_ns_resolution(unresolved_names[0], KNOT_RRTYPE_AAAA);
+               qry->request->selection_context.async_ns_resolution(unresolved_names[0], KNOT_RRTYPE_A);
+       }
+
        if (valid_addresses || to_resolve) {
                bool tcp = qry->flags.TCP | qry->server_selection.truncated;
                *transport = choose_transport(choices, valid_addresses, unresolved_names, to_resolve, qry->server_selection.timeouts, mempool, tcp, NULL);