dirmngr: Add workaround for broken getaddrinfo.
authorWerner Koch <wk@gnupg.org>
Sun, 25 Oct 2015 15:38:07 +0000 (16:38 +0100)
committerWerner Koch <wk@gnupg.org>
Sun, 25 Oct 2015 15:47:12 +0000 (16:47 +0100)
commit5e7ac031f513ad3b60e4f092fa72b3bec0676515
tree6a791e2b779b16e385864bbca2eb511054fa6c29
parent0e3c9f184a5fb3e41277700d690febc2eee9600a
dirmngr: Add workaround for broken getaddrinfo.

* dirmngr/dns-stuff.c (resolve_name_standard): On failure retry by
first resolving the CNAME.
(get_dns_cname): New.

* dirmngr/t-dns-stuff.c (main): Add option --cname.
--

At least the getaddrinfo implementation in glibc 2.19-13 from Debian
returns EAI_NONAME if the CNAME points to a too long list of A/AAAA
addresses.  Looking at the wire the data is correctly returned from
the server but getaddrinfo seems to get confused by truncation and
retry.  To fix this we resolve the CNAME again and call getaddrinfo
again with the canonical name.

Signed-off-by: Werner Koch <wk@gnupg.org>
dirmngr/Makefile.am
dirmngr/dns-stuff.c
dirmngr/dns-stuff.h
dirmngr/t-dns-stuff.c
dirmngr/t-http.c