diff --git a/keyserver/ChangeLog b/keyserver/ChangeLog index 815f5e302..65b7f3fad 100644 --- a/keyserver/ChangeLog +++ b/keyserver/ChangeLog @@ -1,3 +1,9 @@ +2006-02-21 David Shaw + + * curl-shim.h, curl-shim.c (curl_easy_init, curl_easy_setopt, + curl_easy_perform): Add CURLOPT_VERBOSE and CURLOPT_STDERR for + easier debugging. + 2006-01-16 David Shaw * gpgkeys_hkp.c (send_key): Do not escape the '=' in the HTTP POST diff --git a/keyserver/curl-shim.c b/keyserver/curl-shim.c index cf8309b12..fa38abab3 100644 --- a/keyserver/curl-shim.c +++ b/keyserver/curl-shim.c @@ -1,7 +1,7 @@ /* curl-shim.c - Implement a small subset of the curl API in terms of * the iobuf HTTP API * - * Copyright (C) 2005 Free Software Foundation, Inc. + * Copyright (C) 2005, 2006 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -88,7 +88,13 @@ curl_global_cleanup(void) {} CURL * curl_easy_init(void) { - return calloc(1,sizeof(CURL)); + CURL *handle; + + handle=calloc(1,sizeof(CURL)); + if(handle) + handle->stderr=stderr; + + return handle; } void @@ -133,6 +139,12 @@ curl_easy_setopt(CURL *curl,CURLoption option,...) case CURLOPT_FAILONERROR: curl->flags.failonerror=va_arg(ap,unsigned int); break; + case CURLOPT_VERBOSE: + curl->flags.verbose=va_arg(ap,unsigned int); + break; + case CURLOPT_STDERR: + curl->stderr=va_arg(ap,FILE *); + break; default: /* We ignore the huge majority of curl options */ break; @@ -162,6 +174,9 @@ curl_easy_perform(CURL *curl) else proxy=getenv(HTTP_PROXY_ENV); + if(curl->flags.verbose) + fprintf(curl->stderr,"* HTTP proxy is \"%s\"\n",proxy?proxy:"null"); + if(curl->flags.post) { rc=http_open(&curl->hd,HTTP_REQ_POST,curl->url,curl->auth,0,proxy); diff --git a/keyserver/curl-shim.h b/keyserver/curl-shim.h index f8a111466..7fee3b70f 100644 --- a/keyserver/curl-shim.h +++ b/keyserver/curl-shim.h @@ -1,5 +1,5 @@ /* curl-shim.h - * Copyright (C) 2005 Free Software Foundation, Inc. + * Copyright (C) 2005, 2006 Free Software Foundation, Inc. * * This file is part of GNUPG. * @@ -66,10 +66,12 @@ typedef struct void *file; char *postfields; unsigned int status; + FILE *stderr; struct { unsigned int post:1; unsigned int failonerror:1; + unsigned int verbose:1; } flags; struct http_context hd; } CURL;