From 12def3a84e0358528347107dc88cfe740a54941f Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 12 Nov 2019 20:29:47 +0100 Subject: dirmngr: Use IPv4 or IPv6 interface only if available. * dirmngr/dns-stuff.c (cached_inet_support): New variable. (dns_stuff_housekeeping): New. (check_inet_support): New. * dirmngr/http.c (connect_server): Use only detected interfaces. * dirmngr/dirmngr.c (housekeeping_thread): Flush the new cache. -- This currently works only for Windows but that is where users really ran into problems. The old workaround was to configure disable-ipv4 or disable-ipv6. Signed-off-by: Werner Koch --- dirmngr/dns-stuff.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'dirmngr/dns-stuff.h') diff --git a/dirmngr/dns-stuff.h b/dirmngr/dns-stuff.h index 06a43122a..415eac59c 100644 --- a/dirmngr/dns-stuff.h +++ b/dirmngr/dns-stuff.h @@ -134,6 +134,9 @@ void set_dns_nameserver (const char *ipaddr); /* SIGHUP action handler for this module. */ void reload_dns_stuff (int force); +/* Housekeeping for this module. */ +void dns_stuff_housekeeping (void); + void free_dns_addrinfo (dns_addrinfo_t ai); /* Function similar to getaddrinfo. */ @@ -170,4 +173,8 @@ gpg_error_t get_dns_srv (ctrl_t ctrl, struct srventry **list, unsigned int *r_count); +/* Store true in the variable if such an IP interface is usable. */ +void check_inet_support (int *r_v4, int *r_v6); + + #endif /*GNUPG_DIRMNGR_DNS_STUFF_H*/ -- cgit v1.2.3