1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-01-08 12:44:23 +01:00

* gpgkeys_curl.c (get_key, writer): New function to wrap around fwrite to

avoid DLL access problem on win32.

* gpgkeys_http.c (main, get_key): Properly pass authentication info
through to the http library.
This commit is contained in:
David Shaw 2004-12-22 18:07:21 +00:00
parent b96038387b
commit 0361c6f01b
3 changed files with 24 additions and 4 deletions

View File

@ -1,5 +1,11 @@
2004-12-22 David Shaw <dshaw@jabberwocky.com>
* gpgkeys_curl.c (get_key, writer): New function to wrap around
fwrite to avoid DLL access problem on win32.
* gpgkeys_http.c (main, get_key): Properly pass authentication
info through to the http library.
* Makefile.am: Build gpgkeys_http or gpgkeys_curl as needed.
* gpgkeys_curl.c (main, get_key): Minor tweaks to work with either

View File

@ -62,6 +62,14 @@ curl_err_to_gpg_err(CURLcode error)
}
}
/* We wrap fwrite so to avoid DLL problems on Win32 (see curl faq for
more). */
static size_t
writer(const void *ptr,size_t size,size_t nmemb,void *stream)
{
return fwrite(ptr,size,nmemb,stream);
}
static int
get_key(char *getkey)
{
@ -77,7 +85,7 @@ get_key(char *getkey)
host,port[0]?":":"",port[0]?port:"",path[0]?"":"/",path);
curl_easy_setopt(curl,CURLOPT_URL,request);
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,fwrite);
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,writer);
curl_easy_setopt(curl,CURLOPT_FILE,output);
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errorbuffer);

View File

@ -41,7 +41,7 @@ extern int optind;
static int verbose=0;
static unsigned int http_flags=0;
static char host[80]={'\0'},proxy[80]={'\0'},port[10]={'\0'},path[1024]={'\0'};
static char auth[128]={'\0'},host[80]={'\0'},proxy[80]={'\0'},port[10]={'\0'},path[1024]={'\0'};
static FILE *input=NULL,*output=NULL,*console=NULL;
#define BEGIN "-----BEGIN PGP PUBLIC KEY BLOCK-----"
@ -72,8 +72,8 @@ get_key(char *getkey)
return KEYSERVER_NO_MEMORY;
}
sprintf(request,"http://%s%s%s%s%s",host,port[0]?":":"",
port[0]?port:"",path[0]?"":"/",path);
sprintf(request,"http://%s%s%s%s%s%s%s",auth[0]?auth:"",auth[0]?"@":"",
host,port[0]?":":"",port[0]?port:"",path[0]?"":"/",path);
rc=http_open_document(&hd,request,http_flags,proxy[0]?proxy:NULL);
if(rc!=0)
@ -219,6 +219,12 @@ main(int argc,char *argv[])
continue;
}
if(sscanf(line,"AUTH %127s\n",auth)==1)
{
auth[127]='\0';
continue;
}
if(sscanf(line,"HOST %79s\n",host)==1)
{
host[79]='\0';