dirmngr: Fix specifying keyservers by IP address.
authorJustus Winter <justus@g10code.com>
Mon, 16 Nov 2015 17:18:25 +0000 (18:18 +0100)
committerJustus Winter <justus@g10code.com>
Tue, 17 Nov 2015 15:09:45 +0000 (16:09 +0100)
* dirmngr/ks-engine-hkp.c (map_host): Update the original 'hosttable'
entry instead of creating another one.
--
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.

Signed-off-by: Justus Winter <justus@g10code.com>
GnuPG-bug-id: 2012

dirmngr/ks-engine-hkp.c

index c856d6c..7bb4ffe 100644 (file)
@@ -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]");