static void
start_udp(dig_query_t *query);
+static void
+start_tcp(dig_query_t *query);
+
static void
force_next(dig_query_t *query);
return;
}
- if (l->ns_search_only && !l->trace_root && !l->tcp_mode) {
+ if (l->ns_search_only && !l->trace_root) {
+ bool tcp_mode = l->tcp_mode;
+
debug("sending next, since searching");
next = ISC_LIST_NEXT(query, link);
if (next == NULL) {
clear_current_lookup();
} else {
- start_udp(next);
+ if (tcp_mode) {
+ start_tcp(next);
+ } else {
+ start_udp(next);
+ }
}
check_if_done();
/* XXX: set DSCP */
}
- /*
- * If we're at the endgame of a nameserver search, we need to
- * immediately bring up all the queries. Do it here.
- */
- if (query->lookup->ns_search_only && !query->lookup->trace_root) {
- debug("sending next, since searching");
- if (ISC_LINK_LINKED(query, link)) {
- next = ISC_LIST_NEXT(query, link);
- ISC_LIST_DEQUEUE(query->lookup->q, query, link);
- } else {
- next = NULL;
- }
- if (next != NULL) {
- start_tcp(next);
- }
- }
-
return;
+
failure_tls:
if (query->lookup->tls_key_file_set != query->lookup->tls_cert_file_set)
{