aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--keyserver/ChangeLog12
-rw-r--r--keyserver/curl-shim.c19
-rw-r--r--keyserver/gpgkeys_curl.c33
-rw-r--r--keyserver/gpgkeys_hkp.c29
-rw-r--r--keyserver/gpgkeys_http.c6
-rwxr-xr-xkeyserver/gpgkeys_mailto.in2
-rwxr-xr-xkeyserver/gpgkeys_test.in2
7 files changed, 66 insertions, 37 deletions
diff --git a/keyserver/ChangeLog b/keyserver/ChangeLog
index ab689e4df..fab77f9df 100644
--- a/keyserver/ChangeLog
+++ b/keyserver/ChangeLog
@@ -1,5 +1,17 @@
2005-06-23 David Shaw <[email protected]>
+ * gpgkeys_mailto.in, gpgkeys_test.in: Use @VERSION@ so version
+ string stays up to date.
+
+ * gpgkeys_http.c: Don't need to define HTTP_PROXY_ENV here since
+ it's in ksutil.h.
+
+ * gpgkeys_curl.c (get_key, main), gpgkeys_hkp.c (main): Pass AUTH
+ values to curl or curl-shim.
+
+ * curl-shim.c (curl_easy_perform), gpgkeys_curl.c (main),
+ gpgkeys_hkp.c (main): Use curl-style proxy semantics.
+
* curl-shim.h, curl-shim.c (curl_easy_setopt, curl_easy_perform):
Add CURLOPT_USERPWD option for HTTP auth.
diff --git a/keyserver/curl-shim.c b/keyserver/curl-shim.c
index 4828f5253..8575be220 100644
--- a/keyserver/curl-shim.c
+++ b/keyserver/curl-shim.c
@@ -29,6 +29,7 @@
#include <errno.h>
#include "http.h"
#include "util.h"
+#include "ksutil.h"
#include "curl-shim.h"
static CURLcode
@@ -142,10 +143,24 @@ curl_easy_perform(CURL *curl)
int rc;
CURLcode err=CURLE_OK;
const char *errstr=NULL;
+ char *proxy=NULL;
+
+ /* Emulate the libcurl proxy behavior. If the calling program set a
+ proxy, use it. If it didn't set a proxy or set it to NULL, check
+ for one in the environment. If the calling program explicitly
+ set a null-string proxy, don't set a proxy at all. */
+
+ if(curl->proxy)
+ {
+ if(*curl->proxy)
+ proxy=curl->proxy;
+ }
+ else
+ proxy=getenv(HTTP_PROXY_ENV);
if(curl->flags.post)
{
- rc=http_open(&curl->hd,HTTP_REQ_POST,curl->url,curl->auth,0,curl->proxy);
+ rc=http_open(&curl->hd,HTTP_REQ_POST,curl->url,curl->auth,0,proxy);
if(rc==0)
{
char content_len[50];
@@ -166,7 +181,7 @@ curl_easy_perform(CURL *curl)
}
else
{
- rc=http_open(&curl->hd,HTTP_REQ_GET,curl->url,curl->auth,0,curl->proxy);
+ rc=http_open(&curl->hd,HTTP_REQ_GET,curl->url,curl->auth,0,proxy);
if(rc==0)
{
rc=http_wait_response(&curl->hd,&curl->status);
diff --git a/keyserver/gpgkeys_curl.c b/keyserver/gpgkeys_curl.c
index e935bb879..73aeb09cd 100644
--- a/keyserver/gpgkeys_curl.c
+++ b/keyserver/gpgkeys_curl.c
@@ -58,11 +58,8 @@ get_key(char *getkey)
fprintf(output,"KEY 0x%s BEGIN\n",getkey);
- sprintf(request,"%s://%s%s%s%s%s%s",opt->scheme,
- opt->auth?opt->auth:"",
- opt->auth?"@":"",opt->host,
- opt->port?":":"",opt->port?opt->port:"",
- opt->path?opt->path:"/");
+ sprintf(request,"%s://%s%s%s%s",opt->scheme,opt->host,
+ opt->port?":":"",opt->port?opt->port:"",opt->path?opt->path:"/");
curl_easy_setopt(curl,CURLOPT_URL,request);
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,curl_writer);
@@ -98,7 +95,7 @@ main(int argc,char *argv[])
char line[MAX_LINE];
char *thekey=NULL;
long follow_redirects=5;
- char proxy[MAX_PROXY+1];
+ char *proxy=NULL;
console=stderr;
@@ -193,20 +190,19 @@ main(int argc,char *argv[])
if(strncasecmp(start,"http-proxy",10)==0)
{
+ /* Safe to not check the return code of strdup() here.
+ If it fails, we simply won't use a proxy. */
if(no)
- proxy[0]='\0';
- else if(start[10]=='=')
{
- strncpy(proxy,&start[11],MAX_PROXY);
- proxy[MAX_PROXY]='\0';
+ free(proxy);
+ proxy=strdup("");
}
- else if(start[10]=='\0')
+ else if(start[10]=='=')
{
- char *http_proxy=getenv(HTTP_PROXY_ENV);
- if(http_proxy)
+ if(strlen(&start[11])<MAX_PROXY)
{
- strncpy(proxy,http_proxy,MAX_PROXY);
- proxy[MAX_PROXY]='\0';
+ free(proxy);
+ proxy=strdup(&start[11]);
}
}
}
@@ -280,6 +276,9 @@ main(int argc,char *argv[])
curl_easy_setopt(curl,CURLOPT_MAXREDIRS,follow_redirects);
}
+ if(opt->auth)
+ curl_easy_setopt(curl,CURLOPT_USERPWD,opt->auth);
+
if(opt->debug)
{
curl_easy_setopt(curl,CURLOPT_STDERR,console);
@@ -289,7 +288,7 @@ main(int argc,char *argv[])
curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,opt->flags.check_cert);
curl_easy_setopt(curl,CURLOPT_CAINFO,opt->ca_cert_file);
- if(proxy[0])
+ if(proxy)
curl_easy_setopt(curl,CURLOPT_PROXY,proxy);
/* If it's a GET or a SEARCH, the next thing to come in is the
@@ -372,6 +371,8 @@ main(int argc,char *argv[])
if(curl)
curl_easy_cleanup(curl);
+ free(proxy);
+
curl_global_cleanup();
return ret;
diff --git a/keyserver/gpgkeys_hkp.c b/keyserver/gpgkeys_hkp.c
index 66f5a2cb0..1904cdefc 100644
--- a/keyserver/gpgkeys_hkp.c
+++ b/keyserver/gpgkeys_hkp.c
@@ -39,7 +39,6 @@
extern char *optarg;
extern int optind;
-static char proxy[MAX_PROXY+1];
static FILE *input,*output,*console;
static CURL *curl;
static struct ks_options *opt;
@@ -384,6 +383,7 @@ main(int argc,char *argv[])
char line[MAX_LINE];
int failed=0;
struct keylist *keylist=NULL,*keyptr=NULL;
+ char *proxy=NULL;
console=stderr;
@@ -479,19 +479,16 @@ main(int argc,char *argv[])
if(strncasecmp(start,"http-proxy",10)==0)
{
if(no)
- proxy[0]='\0';
- else if(start[10]=='=')
{
- strncpy(proxy,&start[11],MAX_PROXY);
- proxy[MAX_PROXY]='\0';
+ free(proxy);
+ proxy=strdup("");
}
- else if(start[10]=='\0')
+ else if(start[10]=='=')
{
- char *http_proxy=getenv(HTTP_PROXY_ENV);
- if(http_proxy)
+ if(strlen(&start[11])<MAX_PROXY)
{
- strncpy(proxy,http_proxy,MAX_PROXY);
- proxy[MAX_PROXY]='\0';
+ free(proxy);
+ proxy=strdup(&start[11]);
}
}
}
@@ -531,13 +528,16 @@ main(int argc,char *argv[])
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errorbuffer);
+ if(opt->auth)
+ curl_easy_setopt(curl,CURLOPT_USERPWD,opt->auth);
+
if(opt->debug)
{
curl_easy_setopt(curl,CURLOPT_STDERR,console);
curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
}
- if(proxy[0])
+ if(proxy)
curl_easy_setopt(curl,CURLOPT_PROXY,proxy);
#if 0
@@ -704,5 +704,12 @@ main(int argc,char *argv[])
if(output!=stdout)
fclose(output);
+ free_ks_options(opt);
+
+ if(curl)
+ curl_easy_cleanup(curl);
+
+ free(proxy);
+
return ret;
}
diff --git a/keyserver/gpgkeys_http.c b/keyserver/gpgkeys_http.c
index 158fec9ad..4a8844dfe 100644
--- a/keyserver/gpgkeys_http.c
+++ b/keyserver/gpgkeys_http.c
@@ -48,12 +48,6 @@ static char port[MAX_PORT+1];
static char path[URLMAX_PATH+1];
static FILE *input,*output,*console;
-#ifdef __riscos__
-#define HTTP_PROXY_ENV "GnuPG$HttpProxy"
-#else
-#define HTTP_PROXY_ENV "http_proxy"
-#endif
-
static int
get_key(char *getkey)
{
diff --git a/keyserver/gpgkeys_mailto.in b/keyserver/gpgkeys_mailto.in
index c20706ce8..e37f5c0bc 100755
--- a/keyserver/gpgkeys_mailto.in
+++ b/keyserver/gpgkeys_mailto.in
@@ -27,7 +27,7 @@ $sendmail="@SENDMAIL@ -t";
sub VERSION_MESSAGE ()
{
- print STDOUT "gpgkeys_mailto (GnuPG) 1.3.91-cvs\n";
+ print STDOUT "gpgkeys_mailto (GnuPG) @VERSION@\n";
}
sub HELP_MESSAGE ()
diff --git a/keyserver/gpgkeys_test.in b/keyserver/gpgkeys_test.in
index 07b63489d..97748cd3f 100755
--- a/keyserver/gpgkeys_test.in
+++ b/keyserver/gpgkeys_test.in
@@ -26,7 +26,7 @@ $|=1;
sub VERSION_MESSAGE ()
{
- print STDOUT "gpgkeys_test (GnuPG) 1.3.91-cvs\n";
+ print STDOUT "gpgkeys_test (GnuPG) @VERSION@\n";
}
sub HELP_MESSAGE ()