* curl-shim.h, curl-shim.c (curl_easy_setopt, curl_easy_perform): Add
authorDavid Shaw <dshaw@jabberwocky.com>
Fri, 3 Apr 2009 03:59:07 +0000 (03:59 +0000)
committerDavid Shaw <dshaw@jabberwocky.com>
Fri, 3 Apr 2009 03:59:07 +0000 (03:59 +0000)
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.

include/ChangeLog
include/http.h
keyserver/ChangeLog
keyserver/curl-shim.c
keyserver/curl-shim.h
util/ChangeLog
util/http.c

index cb55c96..1d149b4 100644 (file)
@@ -1,3 +1,8 @@
+2009-04-02  David Shaw  <dshaw@jabberwocky.com>
+
+       * http.h: Allow passing srvtag to http_open and
+       http_open_document.
+
 2008-04-17  David Shaw  <dshaw@jabberwocky.com>
 
        * cipher.h: Add the 192-bit variant of Camellia.
index 9ee6dea..a10d31c 100644 (file)
@@ -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*/
index 228eab6..5f7a609 100644 (file)
@@ -1,3 +1,9 @@
+2009-04-02  David Shaw  <dshaw@jabberwocky.com>
+
+       * 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  <dshaw@jabberwocky.com>
 
        * gpgkeys_hkp.c (main): Switch default port for SSLized HKP to
index bf365cf..9c65e8c 100644 (file)
@@ -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);
index 5a0061d..81a42e5 100644 (file)
@@ -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
index 47559ce..7f675b5 100644 (file)
@@ -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.
 
index e176821..3fcce92 100644 (file)
@@ -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)