From 4401184ea7fbe69f4dc78ff6f2f73b21db4cc988 Mon Sep 17 00:00:00 2001 From: David Shaw Date: Wed, 8 Jul 2009 03:50:26 +0000 Subject: * gpgkeys_hkp.c (main, srv_replace): Minor tweaks to use the DNS-SD names ("pgpkey-http" and "pgpkey-https") in SRV lookups instead of "hkp" and "hkps". --- keyserver/ChangeLog | 6 ++++++ keyserver/gpgkeys_hkp.c | 22 +++++++++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/keyserver/ChangeLog b/keyserver/ChangeLog index 186e74f21..3b66fb92c 100644 --- a/keyserver/ChangeLog +++ b/keyserver/ChangeLog @@ -1,3 +1,9 @@ +2009-07-06 David Shaw + + * gpgkeys_hkp.c (main, srv_replace): Minor tweaks to use the + DNS-SD names ("pgpkey-http" and "pgpkey-https") in SRV lookups + instead of "hkp" and "hkps". + 2009-06-24 Werner Koch * gpgkeys_ldap.c (send_key): Do not loop over a NULL modlist in diff --git a/keyserver/gpgkeys_hkp.c b/keyserver/gpgkeys_hkp.c index f82831fff..54056e990 100644 --- a/keyserver/gpgkeys_hkp.c +++ b/keyserver/gpgkeys_hkp.c @@ -494,18 +494,21 @@ fail_all(struct keylist *keylist,int err) /* If there is a SRV record, take the highest ranked possibility. This is a hack, as we don't proceed downwards. */ static void -srv_replace(void) +srv_replace(const char *srvtag) { #ifdef USE_DNS_SRV struct srventry *srvlist=NULL; int srvcount; - if(1+strlen(opt->scheme)+6+strlen(opt->host)+1<=MAXDNAME) + if(!srvtag) + return; + + if(1+strlen(srvtag)+6+strlen(opt->host)+1<=MAXDNAME) { char srvname[MAXDNAME]; strcpy(srvname,"_"); - strcat(srvname,opt->scheme); + strcat(srvname,srvtag); strcat(srvname,"._tcp."); strcat(srvname,opt->host); srvcount=getsrv(srvname,&srvlist); @@ -720,17 +723,26 @@ main(int argc,char *argv[]) port=opt->port; else if(try_srv) { + char *srvtag; + + if(ascii_strcasecmp(opt->scheme,"hkp")==0) + srvtag="pgpkey-http"; + else if(ascii_strcasecmp(opt->scheme,"hkps")==0) + srvtag="pgpkey-https"; + else + srvtag=NULL; + #ifdef HAVE_LIBCURL /* We're using libcurl, so fake SRV support via our wrapper. This isn't as good as true SRV support, as we do not try all possible targets at one particular level and work our way down the list, but it's better than nothing. */ - srv_replace(); + srv_replace(srvtag); #else /* We're using our internal curl shim, so we can use its (true) SRV support. Obviously, CURLOPT_SRVTAG_GPG_HACK isn't a real libcurl option. It's specific to our shim. */ - curl_easy_setopt(curl,CURLOPT_SRVTAG_GPG_HACK,opt->scheme); + curl_easy_setopt(curl,CURLOPT_SRVTAG_GPG_HACK,srvtag); #endif } -- cgit v1.2.3