From 28e2513721ff0cec920564d4087f3600cce8672e Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 2 Dec 2015 11:49:41 +0100 Subject: dirmngr: Switch to an onion address if Tor is running. * dirmngr/dirmngr.h (opt): Turn field 'keyserver' into an strlist. * dirmngr/dirmngr.c (parse_rereadable_options): Allow multiple --keyserver options. * dirmngr/server.c (server_local_s): Add field 'tor_state'. (release_uri_item_list): New. (release_ctrl_keyservers): Use it. (start_command_handler): Release list of keyservers. (is_tor_running): New. (cmd_getinfo): Re-implement "tor" subcommand using new fucntion. (ensure_keyserver): Rewrite. * g10/dirmngr-conf.skel: Add two keyserver options. -- This feature is independent of --use-tor and automagically uses Tor if available. The dirmngr.conf file needs to specify two keyservers to make this work. For new installations this is done using the skeleton file. This feature requires the Libassuan 2.4.2 to work. This patch also fixes a memory leak of opt.keyserver en passant. Signed-off-by: Werner Koch --- dirmngr/dirmngr.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'dirmngr/dirmngr.c') diff --git a/dirmngr/dirmngr.c b/dirmngr/dirmngr.c index ccefc3c06..97d2e15e6 100644 --- a/dirmngr/dirmngr.c +++ b/dirmngr/dirmngr.c @@ -541,8 +541,7 @@ parse_rereadable_options (ARGPARSE_ARGS *pargs, int reread) } FREE_STRLIST (opt.ignored_cert_extensions); http_register_tls_ca (NULL); - xfree (opt.keyserver); - opt.keyserver = NULL; + FREE_STRLIST (opt.keyserver); /* Note: We do not allow resetting of opt.use_tor at runtime. */ return 1; } @@ -622,8 +621,8 @@ parse_rereadable_options (ARGPARSE_ARGS *pargs, int reread) case oUseTor: opt.use_tor = 1; break; case oKeyServer: - xfree (opt.keyserver); - opt.keyserver = *pargs->r.ret_str? xtrystrdup (pargs->r.ret_str) : NULL; + if (*pargs->r.ret_str) + add_to_strlist (&opt.keyserver, pargs->r.ret_str); break; case oNameServer: -- cgit v1.2.3