diff options
author | Werner Koch <[email protected]> | 2016-12-19 22:27:02 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2016-12-19 22:27:02 +0000 |
commit | af8b68fae39b1378c769e0de6ba6437ea1aac7e3 (patch) | |
tree | 16bc96db023b812d21422caf3c029dcee0c91dcf /dirmngr/http.c | |
parent | build: Add target to sign the windows installer. (diff) | |
download | gnupg-af8b68fae39b1378c769e0de6ba6437ea1aac7e3.tar.gz gnupg-af8b68fae39b1378c769e0de6ba6437ea1aac7e3.zip |
dirmngr: Fix problems with the getsrv function.
* dirmngr/dns-stuff.c (opt_debug, opt_verbose): New vars.
(set_dns_verbose): New func.
(libdns_switch_port_p): Add debug output.
(resolve_dns_name): Ditto.
(get_dns_cert): Ditto.
(get_dns_cname): Ditto.
(getsrv_libdns, getsrv_standard): Change SRVCOUNT to an unsigend int.
(getsrv): Rename to ...
((get_dns_srv): this. Add arg R_COUNT and return an error. Add debug
output.
* dirmngr/http.c: Adjust for chnaged getsrv().
* dirmngr/ks-engine-hkp.c (map_host): Ditto.
* dirmngr/t-dns-stuff.c (main): Ditto. Call set_dns_verbose.
* dirmngr/dirmngr.c (parse_rereadable_options): Call set_dns_verbose.
--
Due to our switch to Libdns getsrv didn't worked correctly because it
returned -1 for an NXDOMAIN. However, it is perfectly okay to have no
SRV record and thus we change the way this function is called to be
aligned with the other functions and also map NXDOMAIN to a zero SRV
record count.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to '')
-rw-r--r-- | dirmngr/http.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/dirmngr/http.c b/dirmngr/http.c index ebf80b12d..619f2f1b4 100644 --- a/dirmngr/http.c +++ b/dirmngr/http.c @@ -2321,7 +2321,7 @@ connect_server (const char *server, unsigned short port, { gpg_error_t err; assuan_fd_t sock = ASSUAN_INVALID_FD; - int srvcount = 0; + unsigned int srvcount = 0; int hostfound = 0; int anyhostaddr = 0; int srv, connected; @@ -2377,8 +2377,12 @@ connect_server (const char *server, unsigned short port, { stpcpy (stpcpy (stpcpy (stpcpy (srvname,"_"), srvtag), "._tcp."), server); - srvcount = getsrv (srvname, &serverlist); + err = get_dns_srv (srvname, &serverlist, &srvcount); xfree (srvname); + if (err) + log_info ("getting SRV '%s' failed: %s\n", + serverlist[srv].target, gpg_strerror (err)); + /* Note that on error SRVCOUNT is zero. */ } } } |