aboutsummaryrefslogtreecommitdiffstats
path: root/g10/keyserver.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/keyserver.c')
-rw-r--r--g10/keyserver.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/g10/keyserver.c b/g10/keyserver.c
index 8b71a6340..7cf7824e8 100644
--- a/g10/keyserver.c
+++ b/g10/keyserver.c
@@ -135,7 +135,7 @@ parse_keyserver_options(char *options)
return ret;
}
-static void
+void
free_keyserver_spec(struct keyserver_spec *keyserver)
{
m_free(keyserver->uri);
@@ -146,7 +146,8 @@ free_keyserver_spec(struct keyserver_spec *keyserver)
}
struct keyserver_spec *
-parse_keyserver_uri(char *uri,const char *configname,unsigned int configlineno)
+parse_keyserver_uri(char *uri,int require_scheme,
+ const char *configname,unsigned int configlineno)
{
int assume_hkp=0;
struct keyserver_spec *keyserver;
@@ -163,6 +164,9 @@ parse_keyserver_uri(char *uri,const char *configname,unsigned int configlineno)
scheme=strsep(&uri,":");
if(uri==NULL)
{
+ if(require_scheme)
+ return NULL;
+
/* Assume HKP if there is no scheme */
assume_hkp=1;
uri=scheme;
@@ -1361,9 +1365,11 @@ keyidlist(STRLIST users,KEYDB_SEARCH_DESC **klist,int *count,int fakev3)
dupe[plen]='\0';
/* Make up a keyserver structure and do an
- import for this key. */
+ import for this key. Note that a preferred
+ keyserver without a scheme:// will be
+ interpreted as hkp:// */
- keyserver=parse_keyserver_uri(dupe,NULL,0);
+ keyserver=parse_keyserver_uri(dupe,0,NULL,0);
m_free(dupe);
if(keyserver)