aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Shaw <[email protected]>2009-04-03 03:59:07 +0000
committerDavid Shaw <[email protected]>2009-04-03 03:59:07 +0000
commita929f4c78eff43439e6ed88608b0a12363813ace (patch)
treef9b49537d8155b1dbbdb03de7bf9af7644978e48
parent* http.c (connect_server): free (rather than xfree) the result of (diff)
downloadgnupg-a929f4c78eff43439e6ed88608b0a12363813ace.tar.gz
gnupg-a929f4c78eff43439e6ed88608b0a12363813ace.zip
* curl-shim.h, curl-shim.c (curl_easy_setopt, curl_easy_perform): Add
a CURLOPT_SRVTAG_GPG_HACK (passed through the the http engine). * http.h: Allow passing srvtag to http_open and http_open_document. * http.c (http_open, http_open_document): Allow passing srvtag to http_open and http_open_document.
-rw-r--r--include/ChangeLog5
-rw-r--r--include/http.h13
-rw-r--r--keyserver/ChangeLog6
-rw-r--r--keyserver/curl-shim.c11
-rw-r--r--keyserver/curl-shim.h6
-rw-r--r--util/ChangeLog2
-rw-r--r--util/http.c13
7 files changed, 39 insertions, 17 deletions
diff --git a/include/ChangeLog b/include/ChangeLog
index cb55c965c..1d149b448 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,8 @@
+2009-04-02 David Shaw <[email protected]>
+
+ * http.h: Allow passing srvtag to http_open and
+ http_open_document.
+
2008-04-17 David Shaw <[email protected]>
* cipher.h: Add the 192-bit variant of Camellia.
diff --git a/include/http.h b/include/http.h
index 9ee6deadb..a10d31c0e 100644
--- a/include/http.h
+++ b/include/http.h
@@ -1,6 +1,6 @@
/* http.h - HTTP protocol handler
- * Copyright (C) 1999, 2000, 2001, 2003, 2004,
- * 2005 Free Software Foundation, Inc.
+ * Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005,
+ * 2009 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@@ -54,8 +54,7 @@ typedef enum {
/* put flag values into an enum, so that gdb can display them */
enum
{
- HTTP_FLAG_NO_SHUTDOWN = 1,
- HTTP_FLAG_TRY_SRV = 2
+ HTTP_FLAG_NO_SHUTDOWN = 1
};
struct http_context {
@@ -75,11 +74,13 @@ struct http_context {
typedef struct http_context *HTTP_HD;
int http_open( HTTP_HD hd, HTTP_REQ_TYPE reqtype, const char *url,
- char *auth, unsigned int flags, const char *proxy );
+ char *auth, unsigned int flags, const char *proxy,
+ const char *srvtag );
void http_start_data( HTTP_HD hd );
int http_wait_response( HTTP_HD hd, unsigned int *ret_status );
void http_close( HTTP_HD hd );
int http_open_document( HTTP_HD hd, const char *document, char *auth,
- unsigned int flags, const char *proxy );
+ unsigned int flags, const char *proxy,
+ const char *srvtag );
#endif /*G10_HTTP_H*/
diff --git a/keyserver/ChangeLog b/keyserver/ChangeLog
index 228eab656..5f7a6090f 100644
--- a/keyserver/ChangeLog
+++ b/keyserver/ChangeLog
@@ -1,3 +1,9 @@
+2009-04-02 David Shaw <[email protected]>
+
+ * curl-shim.h, curl-shim.c (curl_easy_setopt, curl_easy_perform):
+ Add a CURLOPT_SRVTAG_GPG_HACK (passed through the the http
+ engine).
+
2009-04-01 David Shaw <[email protected]>
* gpgkeys_hkp.c (main): Switch default port for SSLized HKP to
diff --git a/keyserver/curl-shim.c b/keyserver/curl-shim.c
index bf365cf97..9c65e8c25 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, 2006, 2007, 2008 Free Software Foundation, Inc.
+ * Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@@ -134,6 +134,9 @@ curl_easy_setopt(CURL *curl,CURLoption option,...)
case CURLOPT_POSTFIELDS:
curl->postfields=va_arg(ap,char *);
break;
+ case CURLOPT_SRVTAG_GPG_HACK:
+ curl->srvtag=va_arg(ap,char *);
+ break;
case CURLOPT_FAILONERROR:
curl->flags.failonerror=va_arg(ap,long)?1:0;
break;
@@ -182,7 +185,8 @@ curl_easy_perform(CURL *curl)
if(curl->flags.post)
{
- rc=http_open(&curl->hd,HTTP_REQ_POST,curl->url,curl->auth,0,proxy);
+ rc=http_open(&curl->hd,HTTP_REQ_POST,curl->url,curl->auth,0,proxy,
+ curl->srvtag);
if(rc==0)
{
char content_len[50];
@@ -203,7 +207,8 @@ curl_easy_perform(CURL *curl)
}
else
{
- rc=http_open(&curl->hd,HTTP_REQ_GET,curl->url,curl->auth,0,proxy);
+ rc=http_open(&curl->hd,HTTP_REQ_GET,curl->url,curl->auth,0,proxy,
+ curl->srvtag);
if(rc==0)
{
rc=http_wait_response(&curl->hd,&curl->status);
diff --git a/keyserver/curl-shim.h b/keyserver/curl-shim.h
index 5a0061d70..81a42e540 100644
--- a/keyserver/curl-shim.h
+++ b/keyserver/curl-shim.h
@@ -1,5 +1,5 @@
/* curl-shim.h
- * Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+ * Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
*
* This file is part of GNUPG.
*
@@ -48,7 +48,8 @@ typedef enum
CURLOPT_CAINFO,
CURLOPT_POST,
CURLOPT_POSTFIELDS,
- CURLOPT_FAILONERROR
+ CURLOPT_FAILONERROR,
+ CURLOPT_SRVTAG_GPG_HACK
} CURLoption;
typedef size_t (*write_func)(char *buffer,size_t size,
@@ -63,6 +64,7 @@ typedef struct
write_func writer;
void *file;
char *postfields;
+ char *srvtag;
unsigned int status;
FILE *errors;
struct
diff --git a/util/ChangeLog b/util/ChangeLog
index 47559ce5b..7f675b508 100644
--- a/util/ChangeLog
+++ b/util/ChangeLog
@@ -2,6 +2,8 @@
* http.c (connect_server): free (rather than xfree) the result of
getsrv().
+ (http_open, http_open_document): Allow passing srvtag to http_open
+ and http_open_document.
* Makefile.am: Make srv.c part of libcompat instead of libutil.
diff --git a/util/http.c b/util/http.c
index e176821b8..3fcce9278 100644
--- a/util/http.c
+++ b/util/http.c
@@ -1,6 +1,6 @@
/* http.c - HTTP protocol handler
- * Copyright (C) 1999, 2001, 2002, 2003, 2004,
- * 2005, 2009 Free Software Foundation, Inc.
+ * Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+ * 2009 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@@ -148,7 +148,8 @@ make_radix64_string( const byte *data, size_t len )
int
http_open( HTTP_HD hd, HTTP_REQ_TYPE reqtype, const char *url,
- char *auth, unsigned int flags, const char *proxy )
+ char *auth, unsigned int flags, const char *proxy,
+ const char *srvtag )
{
int rc;
@@ -232,11 +233,11 @@ http_wait_response( HTTP_HD hd, unsigned int *ret_status )
int
http_open_document( HTTP_HD hd, const char *document, char *auth,
- unsigned int flags, const char *proxy )
+ unsigned int flags, const char *proxy, const char *srvtag )
{
int rc;
- rc = http_open(hd, HTTP_REQ_GET, document, auth, flags, proxy );
+ rc = http_open(hd, HTTP_REQ_GET, document, auth, flags, proxy, srvtag );
if( rc )
return rc;
@@ -836,7 +837,7 @@ connect_server( const char *server, ushort port, unsigned int flags,
#ifdef USE_DNS_SRV
/* Do the SRV thing */
- if(flags&HTTP_FLAG_TRY_SRV && srvtag)
+ if(srvtag)
{
/* We're using SRV, so append the tags */
if(1+strlen(srvtag)+6+strlen(server)+1<=MAXDNAME)