aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dirmngr/http.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/dirmngr/http.c b/dirmngr/http.c
index 32c0fb181..81b7ba897 100644
--- a/dirmngr/http.c
+++ b/dirmngr/http.c
@@ -3539,6 +3539,10 @@ same_host_p (parsed_uri_t a, parsed_uri_t b)
{ NULL, "api.protonmail.ch" },
{ "pm.me", "api.protonmail.ch" }
};
+ static const char *subdomains[] =
+ {
+ "openpgpkey."
+ };
int i;
const char *from;
@@ -3560,6 +3564,22 @@ same_host_p (parsed_uri_t a, parsed_uri_t b)
return 1;
}
+ /* Also consider hosts the same if they differ only in a subdomain;
+ * in both direction. This allows to have redirection between the
+ * WKD advanced and direct lookup methods. */
+ for (i=0; i < DIM (subdomains); i++)
+ {
+ const char *subdom = subdomains[i];
+ size_t subdomlen = strlen (subdom);
+
+ if (!ascii_strncasecmp (a->host, subdom, subdomlen)
+ && !ascii_strcasecmp (a->host + subdomlen, b->host))
+ return 1;
+ if (!ascii_strncasecmp (b->host, subdom, subdomlen)
+ && !ascii_strcasecmp (b->host + subdomlen, a->host))
+ return 1;
+ }
+
return 0;
}