aboutsummaryrefslogtreecommitdiffstats
path: root/dirmngr/server.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2022-03-21 21:38:22 +0000
committerWerner Koch <[email protected]>2022-03-21 21:38:22 +0000
commit92c8ae720e69216a2f51d2c7d3cd72340b782fb3 (patch)
treeb14d4fc058337bf397504b22a282998cd3735fe2 /dirmngr/server.c
parentgpgtar: Finally use a pipe for decryption. (diff)
downloadgnupg-92c8ae720e69216a2f51d2c7d3cd72340b782fb3.tar.gz
gnupg-92c8ae720e69216a2f51d2c7d3cd72340b782fb3.zip
dirmngr: Make WKD_GET work even for servers not handling SRV RRs.
* dirmngr/server.c (proc_wkd_get): Take care of DNS server failures -- Unfortunately there are resolver setups which don't handle SRV records but return a server error. We let a not found error pass, because that merely means the domain does not exists. GnuPG-bug-id: 4729
Diffstat (limited to 'dirmngr/server.c')
-rw-r--r--dirmngr/server.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/dirmngr/server.c b/dirmngr/server.c
index c65e0633e..2702d32f9 100644
--- a/dirmngr/server.c
+++ b/dirmngr/server.c
@@ -924,7 +924,14 @@ proc_wkd_get (ctrl_t ctrl, assuan_context_t ctx, char *line)
err = get_dns_srv (ctrl, domain, "openpgpkey", NULL, &srvs, &srvscount);
if (err)
- goto leave;
+ {
+ /* Ignore server failed becuase there are too many resolvers
+ * which do not work as expected. */
+ if (gpg_err_code (err) == GPG_ERR_SERVER_FAILED)
+ err = 0; /*(srvcount is guaranteed to be 0)*/
+ else
+ goto leave;
+ }
/* Check for rogue DNS names. */
for (i = 0; i < srvscount; i++)