Index: common/http.c =================================================================== --- common/http.c +++ common/http.c @@ -1443,7 +1443,7 @@ } # if HTTP_USE_NTBTLS - err = ntbtls_set_hostname (hd->session->tls_session, server); + err = ntbtls_set_hostname (hd->session->tls_session, (httphost? httphost : server)); if (err) { log_info ("ntbtls_set_hostname failed: %s\n", gpg_strerror (err)); @@ -1452,7 +1452,8 @@ # elif HTTP_USE_GNUTLS rc = gnutls_server_name_set (hd->session->tls_session, GNUTLS_NAME_DNS, - server, strlen (server)); + (httphost? httphost:server), + strlen (httphost? httphost:server)); if (rc < 0) log_info ("gnutls_server_name_set failed: %s\n", gnutls_strerror (rc)); # endif /*HTTP_USE_GNUTLS*/ Index: dirmngr/ks-engine-hkp.c =================================================================== --- dirmngr/ks-engine-hkp.c +++ dirmngr/ks-engine-hkp.c @@ -521,6 +521,15 @@ hi = hosttable[idx]; if (hi->pool) { + /* Deal with the pool name before selecting a host. */ + + if (r_poolname && hi->cname) + { + *r_poolname = xtrystrdup (hi->cname); + if (!*r_poolname) + return gpg_error_from_syserror (); + } + /* If the currently selected host is now marked dead, force a re-selection . */ if (force_reselect) @@ -564,13 +573,6 @@ *r_httpflags |= HTTP_FLAG_IGNORE_IPv6; } - if (r_poolname && hi->pool && hi->cname) - { - *r_poolname = xtrystrdup (hi->cname); - if (!*r_poolname) - return gpg_error_from_syserror (); - } - *r_host = xtrystrdup (hi->name); if (!*r_host) {