mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-23 10:29:58 +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>
|
2007-02-10 David Shaw <dshaw@jabberwocky.com>
|
||||||
|
|
||||||
* gpgkeys_ldap.c (send_key): Missing a free().
|
* gpgkeys_ldap.c (send_key): Missing a free().
|
||||||
|
@ -322,8 +322,13 @@ curl_easy_escape(CURL *curl,char *str,int length)
|
|||||||
return enc;
|
return enc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
curl_version_info_data *
|
||||||
curl_free(char *ptr)
|
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;
|
struct http_context hd;
|
||||||
} CURL;
|
} CURL;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
const char **protocols;
|
||||||
|
} curl_version_info_data;
|
||||||
|
|
||||||
#define CURL_ERROR_SIZE 256
|
#define CURL_ERROR_SIZE 256
|
||||||
#define CURL_GLOBAL_DEFAULT 0
|
#define CURL_GLOBAL_DEFAULT 0
|
||||||
|
#define CURLVERSION_NOW 0
|
||||||
|
|
||||||
CURLcode curl_global_init(long flags);
|
CURLcode curl_global_init(long flags);
|
||||||
void curl_global_cleanup(void);
|
void curl_global_cleanup(void);
|
||||||
@ -86,7 +92,8 @@ CURLcode curl_easy_setopt(CURL *curl,CURLoption option,...);
|
|||||||
CURLcode curl_easy_perform(CURL *curl);
|
CURLcode curl_easy_perform(CURL *curl);
|
||||||
void curl_easy_cleanup(CURL *curl);
|
void curl_easy_cleanup(CURL *curl);
|
||||||
char *curl_easy_escape(CURL *curl,char *str,int len);
|
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
|
#define curl_version() "GnuPG curl-shim "VERSION
|
||||||
|
curl_version_info_data *curl_version_info(int type);
|
||||||
|
|
||||||
#endif /* !_CURL_SHIM_H_ */
|
#endif /* !_CURL_SHIM_H_ */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* gpgkeys_curl.c - fetch a key via libcurl
|
/* 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.
|
* This file is part of GnuPG.
|
||||||
*
|
*
|
||||||
@ -112,11 +112,12 @@ show_help (FILE *fp)
|
|||||||
int
|
int
|
||||||
main(int argc,char *argv[])
|
main(int argc,char *argv[])
|
||||||
{
|
{
|
||||||
int arg,ret=KEYSERVER_INTERNAL_ERROR;
|
int arg,ret=KEYSERVER_INTERNAL_ERROR,i;
|
||||||
char line[MAX_LINE];
|
char line[MAX_LINE];
|
||||||
char *thekey=NULL;
|
char *thekey=NULL;
|
||||||
long follow_redirects=5;
|
long follow_redirects=5;
|
||||||
char *proxy=NULL;
|
char *proxy=NULL;
|
||||||
|
curl_version_info_data *curldata;
|
||||||
|
|
||||||
console=stderr;
|
console=stderr;
|
||||||
|
|
||||||
@ -261,6 +262,7 @@ main(int argc,char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
curl_global_init(CURL_GLOBAL_DEFAULT);
|
curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||||
|
|
||||||
curl=curl_easy_init();
|
curl=curl_easy_init();
|
||||||
if(!curl)
|
if(!curl)
|
||||||
{
|
{
|
||||||
@ -269,6 +271,20 @@ main(int argc,char *argv[])
|
|||||||
goto fail;
|
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)
|
if(follow_redirects)
|
||||||
{
|
{
|
||||||
curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,1);
|
curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user