aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--keyserver/ChangeLog7
-rw-r--r--keyserver/gpgkeys_hkp.c43
2 files changed, 37 insertions, 13 deletions
diff --git a/keyserver/ChangeLog b/keyserver/ChangeLog
index f4e2387a8..eb760be79 100644
--- a/keyserver/ChangeLog
+++ b/keyserver/ChangeLog
@@ -1,3 +1,10 @@
+2003-12-28 David Shaw <[email protected]>
+
+ * gpgkeys_hkp.c (send_key, get_key, main): Work with new HTTP code
+ that passes the proxy in from the outside. If the command file
+ sends a proxy, use it. If it sends "http-proxy" with no
+ arguments, use $http_proxy from the environment.
+
2003-12-28 Stefan Bellon <[email protected]>
* gpgkeys_hkp.c, gpgkeys_ldap.c [__riscos__]: Removal of
diff --git a/keyserver/gpgkeys_hkp.c b/keyserver/gpgkeys_hkp.c
index f8e9bc59b..25c47d256 100644
--- a/keyserver/gpgkeys_hkp.c
+++ b/keyserver/gpgkeys_hkp.c
@@ -1,5 +1,5 @@
/* gpgkeys_hkp.c - talk to an HKP keyserver
- * Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@@ -43,7 +43,7 @@ extern int optind;
int verbose=0,include_revoked=0,include_disabled=0;
unsigned int http_flags=0;
-char host[80]={'\0'},port[10]={'\0'};
+char host[80]={'\0'},proxy[80]={'\0'},port[10]={'\0'};
FILE *input=NULL,*output=NULL,*console=NULL;
#define BEGIN "-----BEGIN PGP PUBLIC KEY BLOCK-----"
@@ -55,6 +55,12 @@ struct keylist
struct keylist *next;
};
+#ifdef __riscos__
+#define HTTP_PROXY_ENV "GnuPG$HttpProxy"
+#else
+#define HTTP_PROXY_ENV "http_proxy"
+#endif
+
int
urlencode_filter( void *opaque, int control,
IOBUF a, byte *buf, size_t *ret_len)
@@ -152,7 +158,7 @@ send_key(int *eof)
if(verbose>2)
fprintf(console,"gpgkeys: HTTP URL is \"%s\"\n",request);
- rc=http_open(&hd,HTTP_REQ_POST,request,http_flags);
+ rc=http_open(&hd,HTTP_REQ_POST,request,http_flags,proxy[0]?proxy:NULL);
if(rc)
{
fprintf(console,"gpgkeys: unable to connect to `%s'\n",host);
@@ -256,7 +262,7 @@ get_key(char *getkey)
if(verbose>2)
fprintf(console,"gpgkeys: HTTP URL is \"%s\"\n",request);
- rc=http_open_document(&hd,request,http_flags);
+ rc=http_open_document(&hd,request,http_flags,proxy[0]?proxy:NULL);
if(rc!=0)
{
fprintf(console,"gpgkeys: HKP fetch error: %s\n",
@@ -666,7 +672,7 @@ search_key(char *searchkey)
if(verbose>2)
fprintf(console,"gpgkeys: HTTP URL is \"%s\"\n",request);
- rc=http_open_document(&hd,request,http_flags);
+ rc=http_open_document(&hd,request,http_flags,proxy[0]?proxy:NULL);
if(rc)
{
fprintf(console,"gpgkeys: can't search keyserver `%s': %s\n",
@@ -795,7 +801,7 @@ main(int argc,char *argv[])
{
int version;
char commandstr[7];
- char optionstr[30];
+ char optionstr[110];
char hash;
if(line[0]=='\n')
@@ -841,12 +847,12 @@ main(int argc,char *argv[])
continue;
}
- if(sscanf(line,"OPTION %29s\n",optionstr)==1)
+ if(sscanf(line,"OPTION %109s\n",optionstr)==1)
{
int no=0;
char *start=&optionstr[0];
- optionstr[29]='\0';
+ optionstr[109]='\0';
if(strncasecmp(optionstr,"no-",3)==0)
{
@@ -875,13 +881,24 @@ main(int argc,char *argv[])
else
include_disabled=1;
}
- else if(strcasecmp(start,"honor-http-proxy")==0)
+ else if(strncasecmp(start,"http-proxy",10)==0)
{
if(no)
- http_flags&=~HTTP_FLAG_TRY_PROXY;
- else
- http_flags|=HTTP_FLAG_TRY_PROXY;
-
+ proxy[0]='\0';
+ else if(start[10]=='=')
+ {
+ strncpy(proxy,&start[11],79);
+ proxy[79]='\0';
+ }
+ else if(start[10]=='\0')
+ {
+ char *http_proxy=getenv(HTTP_PROXY_ENV);
+ if(http_proxy)
+ {
+ strncpy(proxy,http_proxy,79);
+ proxy[79]='\0';
+ }
+ }
}
else if(strcasecmp(start,"broken-http-proxy")==0)
{