From ebba10cf9edd2df5e46333cda991cf3168f2d662 Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Mon, 16 Nov 2015 18:18:25 +0100 Subject: [PATCH] dirmngr: Fix specifying keyservers by IP address. Previously, if a keyserver was given using its IP address (e.g. 'hkp://127.0.0.1'), 'map_host' would create two entries in the 'hosttable', one with the name '127.0.0.1', and the second one with the name 'localhost' and 'v4addr' being set to '127.0.0.1'. But the first entry is the one being used for lookups, and since the 'v4' flag is not set, the 'HTTP_FLAG_IGNORE_IPv4' is used when doing the http request, making it fail. * dirmngr/ks-engine-hkp.c (map_host): Update the original 'hosttable' entry instead of creating another one. Signed-off-by: Justus Winter GnuPG-bug-id: 2012 --- dirmngr/ks-engine-hkp.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dirmngr/ks-engine-hkp.c b/dirmngr/ks-engine-hkp.c index a6587271c..7051a5b68 100644 --- a/dirmngr/ks-engine-hkp.c +++ b/dirmngr/ks-engine-hkp.c @@ -378,7 +378,11 @@ map_host (ctrl_t ctrl, const char *name, int force_reselect, } else { - tmpidx = find_hostinfo (tmphost); + if (!is_pool && is_ip_address (name)) + /* Update the original entry. */ + tmpidx = idx; + else + tmpidx = find_hostinfo (tmphost); log_info ("resolve_dns_addr for '%s': '%s'%s\n", name, tmphost, tmpidx == -1? "" : " [already known]");