mirror of git://git.gnupg.org/gnupg.git
dirmngr: Load the hosts file into libdns.
* dirmngr/dns-stuff.c (libdns_init): Actually load the hosts file into libdns. -- Previously, connecting to key servers specified in /etc/hosts was not possible because libdns' hosts structure was initialized, but not filled with the content of the hosts file. GnuPG-bug-id: 2977 Signed-off-by: Justus Winter <justus@g10code.com>
This commit is contained in:
parent
06f1f163e9
commit
88f1505f06
|
@ -533,11 +533,35 @@ libdns_init (void)
|
||||||
ld.hosts = dns_hosts_open (&derr);
|
ld.hosts = dns_hosts_open (&derr);
|
||||||
if (!ld.hosts)
|
if (!ld.hosts)
|
||||||
{
|
{
|
||||||
log_error ("failed to load hosts file: %s\n", gpg_strerror (err));
|
|
||||||
err = libdns_error_to_gpg_error (derr);
|
err = libdns_error_to_gpg_error (derr);
|
||||||
|
log_error ("failed to initialize hosts file: %s\n", gpg_strerror (err));
|
||||||
goto leave;
|
goto leave;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
#if HAVE_W32_SYSTEM
|
||||||
|
char *hosts_path = xtryasprintf ("%s\System32\drivers\etc\hosts",
|
||||||
|
getenv ("SystemRoot"));
|
||||||
|
if (! hosts_path)
|
||||||
|
{
|
||||||
|
err = gpg_error_from_syserror ();
|
||||||
|
goto leave;
|
||||||
|
}
|
||||||
|
|
||||||
|
derr = dns_hosts_loadpath (ld.hosts, hosts_path);
|
||||||
|
xfree (hosts_path);
|
||||||
|
#else
|
||||||
|
derr = dns_hosts_loadpath (ld.hosts, "/etc/hosts");
|
||||||
|
#endif
|
||||||
|
if (derr)
|
||||||
|
{
|
||||||
|
err = libdns_error_to_gpg_error (derr);
|
||||||
|
log_error ("failed to load hosts file: %s\n", gpg_strerror (err));
|
||||||
|
goto leave;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* dns_hints_local for stub mode, dns_hints_root for recursive. */
|
/* dns_hints_local for stub mode, dns_hints_root for recursive. */
|
||||||
ld.hints = (recursive_resolver
|
ld.hints = (recursive_resolver
|
||||||
? dns_hints_root (ld.resolv_conf, &derr)
|
? dns_hints_root (ld.resolv_conf, &derr)
|
||||||
|
|
Loading…
Reference in New Issue