mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
From STABLE-BRANCH-1-4
* gpgkeys_curl.c (main): Use curl_version_info to verify that the protocol we're about to use is actually available. * curl-shim.h, curl-shim.c (curl_free): Make into a macro. (curl_version_info): New. Only advertises "http" for our shim, of course.
This commit is contained in:
parent
24feaa4f8a
commit
458efc1d6f
4 changed files with 45 additions and 6 deletions
|
@ -1,5 +1,5 @@
|
|||
/* gpgkeys_curl.c - fetch a key via libcurl
|
||||
* Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
* Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
|
||||
*
|
||||
* This file is part of GnuPG.
|
||||
*
|
||||
|
@ -112,11 +112,12 @@ show_help (FILE *fp)
|
|||
int
|
||||
main(int argc,char *argv[])
|
||||
{
|
||||
int arg,ret=KEYSERVER_INTERNAL_ERROR;
|
||||
int arg,ret=KEYSERVER_INTERNAL_ERROR,i;
|
||||
char line[MAX_LINE];
|
||||
char *thekey=NULL;
|
||||
long follow_redirects=5;
|
||||
char *proxy=NULL;
|
||||
curl_version_info_data *curldata;
|
||||
|
||||
console=stderr;
|
||||
|
||||
|
@ -261,6 +262,7 @@ main(int argc,char *argv[])
|
|||
}
|
||||
|
||||
curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||
|
||||
curl=curl_easy_init();
|
||||
if(!curl)
|
||||
{
|
||||
|
@ -269,6 +271,20 @@ main(int argc,char *argv[])
|
|||
goto fail;
|
||||
}
|
||||
|
||||
/* Make sure we have the protocol the user is asking for so we can
|
||||
print a nicer error message. */
|
||||
curldata=curl_version_info(CURLVERSION_NOW);
|
||||
for(i=0;curldata->protocols[i];i++)
|
||||
if(strcasecmp(curldata->protocols[i],opt->scheme)==0)
|
||||
break;
|
||||
|
||||
if(curldata->protocols[i]==NULL)
|
||||
{
|
||||
fprintf(console,"gpgkeys: protocol `%s' not supported\n",opt->scheme);
|
||||
ret=KEYSERVER_SCHEME_NOT_FOUND;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if(follow_redirects)
|
||||
{
|
||||
curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,1);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue