diff options
author | Werner Koch <[email protected]> | 2015-04-21 15:14:53 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2015-04-21 15:15:34 +0000 |
commit | a0dead5edce07838cf5ff3ec7205a3bff2a6ef70 (patch) | |
tree | 9cde273c57c7f1e97260f0da17d2475130849fd2 /dirmngr/server.c | |
parent | gpg: Do not use honor-keyserver-url sub-option by default. (diff) | |
download | gnupg-a0dead5edce07838cf5ff3ec7205a3bff2a6ef70.tar.gz gnupg-a0dead5edce07838cf5ff3ec7205a3bff2a6ef70.zip |
dirmngr: Add http proxy support for keyservers.
* dirmngr/dirmngr.h (server_control_s): Add field http_proxy.
* dirmngr/dirmngr.c (dirmngr_init_default_ctrl): Copy http_proxy value
from OPT.
(dirmngr_deinit_default_ctrl): New.
(main): Call dirmngr_deinit_default_ctrl.
* dirmngr/server.c (start_command_handler): Ditto.
(option_handler): Add option "http-proxy".
* dirmngr/crlfetch.c (crl_fetch): Take http_proxy from CTRL.
* dirmngr/ocsp.c (do_ocsp_request): Ditto.
* dirmngr/ks-engine-hkp.c (send_request): Add proxy support.
* dirmngr/ks-engine-http.c (ks_http_fetch): Ditto.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'dirmngr/server.c')
-rw-r--r-- | dirmngr/server.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/dirmngr/server.c b/dirmngr/server.c index 3e6d99d18..c0f63ac7d 100644 --- a/dirmngr/server.c +++ b/dirmngr/server.c @@ -582,6 +582,7 @@ static gpg_error_t option_handler (assuan_context_t ctx, const char *key, const char *value) { ctrl_t ctrl = assuan_get_pointer (ctx); + gpg_error_t err = 0; if (!strcmp (key, "force-crl-refresh")) { @@ -593,12 +594,21 @@ option_handler (assuan_context_t ctx, const char *key, const char *value) int i = *value? atoi (value) : 0; ctrl->audit_events = i; } + else if (!strcmp (key, "http-proxy")) + { + xfree (ctrl->http_proxy); + if (!*value || !strcmp (value, "none")) + ctrl->http_proxy = NULL; + else if (!(ctrl->http_proxy = xtrystrdup (value))) + err = gpg_error_from_syserror (); + } else - return gpg_error (GPG_ERR_UNKNOWN_OPTION); + err = gpg_error (GPG_ERR_UNKNOWN_OPTION); - return 0; + return err; } + static const char hlp_ldapserver[] = "LDAPSERVER <data>\n" "\n" @@ -1633,7 +1643,7 @@ static const char hlp_ks_get[] = "\n" "Get the keys matching PATTERN from the configured OpenPGP keyservers\n" "(see command KEYSERVER). Each pattern should be a keyid, a fingerprint,\n" - "or an exact name indicastes by the '=' prefix."; + "or an exact name indicated by the '=' prefix."; static gpg_error_t cmd_ks_get (assuan_context_t ctx, char *line) { @@ -2096,6 +2106,7 @@ start_command_handler (assuan_fd_t fd) { release_ctrl_ocsp_certs (ctrl); xfree (ctrl->server_local); + dirmngr_deinit_default_ctrl (ctrl); xfree (ctrl); } } |