]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
daemon/worker: minor adaptation of fa677610 after cherrypicking from older branch
authorGrigorii Demidov <grigorii.demidov@nic.cz>
Thu, 22 Nov 2018 15:45:30 +0000 (16:45 +0100)
committerPetr Špaček <petr.spacek@nic.cz>
Wed, 5 Dec 2018 15:21:46 +0000 (15:21 +0000)
daemon/worker.c

index 73639ef8c1b7237eef5889ccf146de5a1ddb8844..1b5b5b3d56cdd1eeae82bf2d5ba2d5dc77731d3b 100644 (file)
@@ -1402,19 +1402,20 @@ static int qr_task_step(struct qr_task *task,
        }
 
        /* Upgrade to TLS if the upstream address is configured as DoT capable. */
-       struct engine *engine = ctx->worker->engine;
-       struct network *net = &engine->net;
-       const struct sockaddr *addr = packet_source ? packet_source : task->addrlist;
-       struct tls_client_paramlist_entry *tls_entry = NULL;
-       if (kr_inaddr_port(task->addrlist) == KR_DNS_PORT) {
-               tls_entry = tls_client_try_upgrade(&net->tls_client_params, task->addrlist);
+       if (task->addrlist_count > 0 && kr_inaddr_port(task->addrlist) == KR_DNS_PORT) {
+               /* TODO if there are multiple addresses (task->addrlist_count > 1)
+                * check all of them. */
+               struct engine *engine = worker->engine;
+               struct network *net = &engine->net;
+               struct tls_client_paramlist_entry *tls_entry =
+                       tls_client_try_upgrade(&net->tls_client_params, task->addrlist);
                if (tls_entry != NULL) {
                        kr_inaddr_set_port(task->addrlist, KR_DNS_TLS_PORT);
+                       packet_source = NULL;
                        sock_type = SOCK_STREAM;
+                       /* TODO in this case in tcp_task_make_connection() will be performed
+                        * redundant map_get() call. */
                }
-       } else if (sock_type == SOCK_STREAM) {
-               const char *key = tcpsess_key(addr);
-               tls_entry = map_get(&net->tls_client_params, key);
        }
 
        int ret = 0;