diff options
author | David Shaw <[email protected]> | 2005-08-18 04:17:20 +0000 |
---|---|---|
committer | David Shaw <[email protected]> | 2005-08-18 04:17:20 +0000 |
commit | e9b444a9d09de8ccbe0295dae33e6abcf8e79b77 (patch) | |
tree | ebf51c02682e8d3af3ec2077c10f40d181bc8931 /keyserver/gpgkeys_hkp.c | |
parent | Experimental code to improve AES performance. Got about 25% on ia32. (diff) | |
download | gnupg-e9b444a9d09de8ccbe0295dae33e6abcf8e79b77.tar.gz gnupg-e9b444a9d09de8ccbe0295dae33e6abcf8e79b77.zip |
* ksutil.h, ksutil.c (parse_ks_options): New keyserver-option
exact-email.
* gpgkeys_ldap.c (search_key), gpgkeys_hkp.c (search_key): Use it here
to do an email-only search.
Diffstat (limited to 'keyserver/gpgkeys_hkp.c')
-rw-r--r-- | keyserver/gpgkeys_hkp.c | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/keyserver/gpgkeys_hkp.c b/keyserver/gpgkeys_hkp.c index cd0773fde..b231420e9 100644 --- a/keyserver/gpgkeys_hkp.c +++ b/keyserver/gpgkeys_hkp.c @@ -287,13 +287,40 @@ int search_key(char *searchkey) { CURLcode res; - char *request; - char *searchkey_encoded; + char *request=NULL; + char *searchkey_encoded=NULL; int ret=KEYSERVER_INTERNAL_ERROR; - searchkey_encoded=curl_escape(searchkey,0); + if(opt->flags.exact_email) + { + char *bracketed; - request=malloc(MAX_URL+50+strlen(searchkey_encoded)); + bracketed=malloc(1+strlen(searchkey)+1+1); + if(!bracketed) + { + fprintf(console,"gpgkeys: out of memory\n"); + ret=KEYSERVER_NO_MEMORY; + goto fail; + } + + strcpy(bracketed,"<"); + strcat(bracketed,searchkey); + strcat(bracketed,">"); + + searchkey_encoded=curl_escape(bracketed,0); + free(bracketed); + } + else + searchkey_encoded=curl_escape(searchkey,0); + + if(!searchkey_encoded) + { + fprintf(console,"gpgkeys: out of memory\n"); + ret=KEYSERVER_NO_MEMORY; + goto fail; + } + + request=malloc(MAX_URL+60+strlen(searchkey_encoded)); if(!request) { fprintf(console,"gpgkeys: out of memory\n"); @@ -314,6 +341,9 @@ search_key(char *searchkey) append_path(request,"/pks/lookup?op=index&options=mr&search="); strcat(request,searchkey_encoded); + if(opt->flags.exact_email) + strcat(request,"&exact=on"); + if(opt->verbose>2) fprintf(console,"gpgkeys: HTTP URL is `%s'\n",request); |