mirror of
git://git.gnupg.org/gnupg.git
synced 2024-11-10 21:38:50 +01:00
* 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
7b3e35a24c
commit
7a81947753
@ -1,3 +1,12 @@
|
||||
2007-03-13 David Shaw <dshaw@jabberwocky.com>
|
||||
|
||||
* 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.
|
||||
|
||||
2007-02-10 David Shaw <dshaw@jabberwocky.com>
|
||||
|
||||
* gpgkeys_ldap.c (send_key): Missing a free().
|
||||
|
@ -322,8 +322,13 @@ curl_easy_escape(CURL *curl,char *str,int length)
|
||||
return enc;
|
||||
}
|
||||
|
||||
void
|
||||
curl_free(char *ptr)
|
||||
curl_version_info_data *
|
||||
curl_version_info(int type)
|
||||
{
|
||||
free(ptr);
|
||||
static curl_version_info_data data;
|
||||
static const char *protocols[]={"http",NULL};
|
||||
|
||||
data.protocols=protocols;
|
||||
|
||||
return &data;
|
||||
}
|
||||
|
@ -76,8 +76,14 @@ typedef struct
|
||||
struct http_context hd;
|
||||
} CURL;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const char **protocols;
|
||||
} curl_version_info_data;
|
||||
|
||||
#define CURL_ERROR_SIZE 256
|
||||
#define CURL_GLOBAL_DEFAULT 0
|
||||
#define CURLVERSION_NOW 0
|
||||
|
||||
CURLcode curl_global_init(long flags);
|
||||
void curl_global_cleanup(void);
|
||||
@ -86,7 +92,8 @@ CURLcode curl_easy_setopt(CURL *curl,CURLoption option,...);
|
||||
CURLcode curl_easy_perform(CURL *curl);
|
||||
void curl_easy_cleanup(CURL *curl);
|
||||
char *curl_easy_escape(CURL *curl,char *str,int len);
|
||||
void curl_free(char *ptr);
|
||||
#define curl_free(x) free(x)
|
||||
#define curl_version() "GnuPG curl-shim "VERSION
|
||||
curl_version_info_data *curl_version_info(int type);
|
||||
|
||||
#endif /* !_CURL_SHIM_H_ */
|
||||
|
@ -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…
Reference in New Issue
Block a user