diff options
author | David Shaw <[email protected]> | 2004-12-22 17:49:44 +0000 |
---|---|---|
committer | David Shaw <[email protected]> | 2004-12-22 17:49:44 +0000 |
commit | b96038387bb86a6608f74027fed43bd85cfe2941 (patch) | |
tree | 670def0b8e692befe8f9b92ed729812093bd38d1 /g10/keyserver.c | |
parent | * Makefile.am: Build gpgkeys_http or gpgkeys_curl as needed. (diff) | |
download | gnupg-b96038387bb86a6608f74027fed43bd85cfe2941.tar.gz gnupg-b96038387bb86a6608f74027fed43bd85cfe2941.zip |
* keyserver.c (keyserver_typemap): New. Map certain keyserver types to a
common type (e.g. ldaps -> ldap). If we are building with curl, map both
http and ftp to curl.
* build-packet.c (build_sig_subpkt): Only allow one preferred keyserver
subpacket at a time.
Diffstat (limited to '')
-rw-r--r-- | g10/keyserver.c | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/g10/keyserver.c b/g10/keyserver.c index 5084a7c15..854187f74 100644 --- a/g10/keyserver.c +++ b/g10/keyserver.c @@ -759,6 +759,24 @@ keyserver_search_prompt(IOBUF buffer,const char *searchstr) m_free(line); } +/* We sometimes want to use a different gpgkeys_xxx for a given + protocol (for example, ldaps is handled by gpgkeys_ldap). Map + these here. */ +static const char * +keyserver_typemap(const char *type) +{ + if(strcmp(type,"ldaps")==0) + return "ldap"; +#ifdef HAVE_LIBCURL + else if(strcmp(type,"ftp")==0) + return "curl"; + else if(strcmp(type,"http")==0) + return "curl"; +#endif /* HAVE_LIBCURL */ + else + return type; +} + #define KEYSERVER_ARGS_KEEP " -o \"%O\" \"%I\"" #define KEYSERVER_ARGS_NOKEEP " -o \"%o\" \"%i\"" @@ -773,6 +791,7 @@ keyserver_spawn(int action,STRLIST list,KEYDB_SEARCH_DESC *desc, byte *line=NULL; struct parse_options *kopts; struct exec_info *spawn; + const char *scheme; assert(keyserver); @@ -789,14 +808,10 @@ keyserver_spawn(int action,STRLIST list,KEYDB_SEARCH_DESC *desc, #endif /* Build the filename for the helper to execute */ - /* Note that we don't use a symlink for "ldaps" anymore because this - won't work under MS Windows. */ - command=m_alloc(strlen("gpgkeys_")+strlen(keyserver->scheme)+1); + scheme=keyserver_typemap(keyserver->scheme); + command=m_alloc(strlen("gpgkeys_")+strlen(scheme)+1); strcpy(command,"gpgkeys_"); - if (!strcmp (keyserver->scheme, "ldaps")) - strcat(command, "ldap"); - else - strcat(command,keyserver->scheme); + strcat(command,scheme); if(opt.keyserver_options.options&KEYSERVER_USE_TEMP_FILES) { @@ -1252,9 +1267,8 @@ keyserver_work(int action,STRLIST list,KEYDB_SEARCH_DESC *desc, case KEYSERVER_VERSION_ERROR: log_error(_("gpgkeys_%s does not support handler version %d\n"), - !strcmp (keyserver->scheme,"ldaps")? - "ldap": keyserver->scheme, - KEYSERVER_PROTO_VERSION); + keyserver_typemap(keyserver->scheme), + KEYSERVER_PROTO_VERSION); break; case KEYSERVER_TIMEOUT: |