From 81c012787fabf734d9c952c6f18ecac21929d4d8 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 20 Dec 2016 09:53:58 +0100 Subject: dirmngr: New option --resolver-timeout. * dirmngr/dns-stuff.c (DEFAULT_TIMEOUT): New. (opt_timeout): New var. (set_dns_timeout): New. (libdns_res_open): Set the default timeout. (libdns_res_wait): Use configurable timeout. (resolve_name_libdns): Ditto. * dirmngr/dirmngr.c (oResolverTimeout): New const. (opts): New option --resolver-timeout. (parse_rereadable_options): Set that option. (main) : Add --nameserver and --resolver-timeout. * tools/gpgconf-comp.c (gc_options_dirmngr): Add --resolver-timeout and --nameserver. * dirmngr/http.c (connect_server): Fix yesterday introduced bug in error diagnostic. -- This timeout is a pretty crude thing because libdns has a few other internal timeouts as well. Signed-off-by: Werner Koch --- dirmngr/dirmngr.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'dirmngr/dirmngr.c') diff --git a/dirmngr/dirmngr.c b/dirmngr/dirmngr.c index bb4d9f3ef..5ee589e93 100644 --- a/dirmngr/dirmngr.c +++ b/dirmngr/dirmngr.c @@ -142,6 +142,7 @@ enum cmd_and_opt_values { oDisableCheckOwnSocket, oStandardResolver, oRecursiveResolver, + oResolverTimeout, aTest }; @@ -240,6 +241,7 @@ static ARGPARSE_OPTS opts[] = { ARGPARSE_s_s (oIgnoreCertExtension,"ignore-cert-extension", "@"), ARGPARSE_s_n (oStandardResolver, "standard-resolver", "@"), ARGPARSE_s_n (oRecursiveResolver, "recursive-resolver", "@"), + ARGPARSE_s_i (oResolverTimeout, "resolver-timeout", "@"), ARGPARSE_group (302,N_("@\n(See the \"info\" manual for a complete listing " "of all commands and options)\n")), @@ -550,6 +552,7 @@ parse_rereadable_options (ARGPARSE_ARGS *pargs, int reread) /* Note: We do not allow resetting of opt.use_tor at runtime. */ disable_check_own_socket = 0; enable_standard_resolver (0); + set_dns_timeout (0); return 1; } @@ -636,6 +639,10 @@ parse_rereadable_options (ARGPARSE_ARGS *pargs, int reread) set_dns_nameserver (pargs->r.ret_str); break; + case oResolverTimeout: + set_dns_timeout (pargs->r.ret_int); + break; + default: return 0; /* Not handled. */ } @@ -1376,6 +1383,9 @@ main (int argc, char **argv) es_printf ("use-tor:%lu:\n", flags | GC_OPT_FLAG_NONE); es_printf ("keyserver:%lu:\n", flags | GC_OPT_FLAG_NONE); + es_printf ("nameserver:%lu:\n", flags | GC_OPT_FLAG_NONE); + es_printf ("resolver-timeout:%lu:%u\n", + flags | GC_OPT_FLAG_DEFAULT, 0); } cleanup (); return !!rc; -- cgit v1.2.3