aboutsummaryrefslogtreecommitdiffstats
path: root/keyserver/curl-shim.c
diff options
context:
space:
mode:
authorDavid Shaw <[email protected]>2005-04-17 02:18:32 +0000
committerDavid Shaw <[email protected]>2005-04-17 02:18:32 +0000
commit0884653a13fe6f2ce3f79798647cd293f0a15d95 (patch)
tree7a027a298e9383404988285000c6ff20f8ee86f2 /keyserver/curl-shim.c
parent* ksutil.h, ksutil.c (curl_writer), gpgkeys_curl.c (get_key): Pass a (diff)
downloadgnupg-0884653a13fe6f2ce3f79798647cd293f0a15d95.tar.gz
gnupg-0884653a13fe6f2ce3f79798647cd293f0a15d95.zip
* gpgkeys_hkp.c: New hkp handler that uses curl or curl-shim.
* Makefile.am: Build new gpgkeys_hkp. * curl-shim.c (curl_easy_perform): Cleanup.
Diffstat (limited to 'keyserver/curl-shim.c')
-rw-r--r--keyserver/curl-shim.c121
1 files changed, 54 insertions, 67 deletions
diff --git a/keyserver/curl-shim.c b/keyserver/curl-shim.c
index 8e0641f27..d72bb66d2 100644
--- a/keyserver/curl-shim.c
+++ b/keyserver/curl-shim.c
@@ -30,10 +30,13 @@
#include "util.h"
#include "curl-shim.h"
-static CURLcode handle_error(CURL *curl,CURLcode err,const char *str)
+static CURLcode
+handle_error(CURL *curl,CURLcode err,const char *str)
{
if(curl->errorbuffer)
{
+ /* Make sure you never exceed CURL_ERROR_SIZE, currently set to
+ 256 in curl-shim.h */
switch(err)
{
case CURLE_OK:
@@ -67,24 +70,29 @@ static CURLcode handle_error(CURL *curl,CURLcode err,const char *str)
return err;
}
-CURLcode curl_global_init(long flags)
+CURLcode
+curl_global_init(long flags)
{
return CURLE_OK;
}
-void curl_global_cleanup(void) {}
+void
+curl_global_cleanup(void) {}
-CURL *curl_easy_init(void)
+CURL *
+curl_easy_init(void)
{
return calloc(1,sizeof(CURL));
}
-void curl_easy_cleanup(CURL *curl)
+void
+curl_easy_cleanup(CURL *curl)
{
free(curl);
}
-CURLcode curl_easy_setopt(CURL *curl,CURLoption option,...)
+CURLcode
+curl_easy_setopt(CURL *curl,CURLoption option,...)
{
va_list ap;
@@ -124,7 +132,8 @@ CURLcode curl_easy_setopt(CURL *curl,CURLoption option,...)
return handle_error(curl,CURLE_OK,NULL);
}
-CURLcode curl_easy_perform(CURL *curl)
+CURLcode
+curl_easy_perform(CURL *curl)
{
int rc;
CURLcode err=CURLE_OK;
@@ -133,16 +142,7 @@ CURLcode curl_easy_perform(CURL *curl)
if(curl->flags.post)
{
rc=http_open(&curl->hd,HTTP_REQ_POST,curl->url,0,curl->proxy);
- if(rc!=0)
- {
- if(rc==G10ERR_NETWORK)
- errstr=strerror(errno);
- else
- errstr=g10_errstr(rc);
-
- err=CURLE_COULDNT_CONNECT;
- }
- else
+ if(rc==0)
{
char content_len[50];
unsigned int post_len=strlen(curl->postfields);
@@ -156,73 +156,58 @@ CURLcode curl_easy_perform(CURL *curl)
http_start_data(&curl->hd);
iobuf_write(curl->hd.fp_write,curl->postfields,post_len);
rc=http_wait_response(&curl->hd,&curl->status);
- if(rc!=0)
- {
- if(rc==G10ERR_NETWORK)
- errstr=strerror(errno);
- else
- errstr=g10_errstr(rc);
-
- err=CURLE_COULDNT_CONNECT;
- }
-
- if(curl->flags.failonerror && curl->status>=300)
+ if(rc==0 && curl->flags.failonerror && curl->status>=300)
err=CURLE_HTTP_RETURNED_ERROR;
}
}
else
{
rc=http_open(&curl->hd,HTTP_REQ_GET,curl->url,0,curl->proxy);
- if(rc!=0)
- {
- if(rc==G10ERR_NETWORK)
- errstr=strerror(errno);
- else
- errstr=g10_errstr(rc);
-
- err=CURLE_COULDNT_CONNECT;
- }
- else
+ if(rc==0)
{
rc=http_wait_response(&curl->hd,&curl->status);
- if(rc)
+ if(rc==0)
{
- http_close(&curl->hd);
-
- if(rc==G10ERR_NETWORK)
- errstr=strerror(errno);
+ if(curl->flags.failonerror && curl->status>=300)
+ err=CURLE_HTTP_RETURNED_ERROR;
else
- errstr=g10_errstr(rc);
-
- err=CURLE_COULDNT_CONNECT;
- }
- else if(curl->flags.failonerror && curl->status>=300)
- err=CURLE_HTTP_RETURNED_ERROR;
- else
- {
- unsigned int maxlen=1024,buflen,len;
- byte *line=NULL;
-
- while((len=iobuf_read_line(curl->hd.fp_read,
- &line,&buflen,&maxlen)))
{
- maxlen=1024;
- size_t ret;
+ unsigned int maxlen=1024,buflen,len;
+ byte *line=NULL;
- ret=(curl->writer)(line,len,1,curl->file);
- if(ret!=len)
+ while((len=iobuf_read_line(curl->hd.fp_read,
+ &line,&buflen,&maxlen)))
{
- err=CURLE_WRITE_ERROR;
- break;
+ maxlen=1024;
+ size_t ret;
+
+ ret=(curl->writer)(line,len,1,curl->file);
+ if(ret!=len)
+ {
+ err=CURLE_WRITE_ERROR;
+ break;
+ }
}
- }
- m_free(line);
- http_close(&curl->hd);
+ m_free(line);
+ http_close(&curl->hd);
+ }
}
+ else
+ http_close(&curl->hd);
}
}
+ if(rc!=0)
+ {
+ if(rc==G10ERR_NETWORK)
+ errstr=strerror(errno);
+ else
+ errstr=g10_errstr(rc);
+
+ err=CURLE_COULDNT_CONNECT;
+ }
+
return handle_error(curl,err,errstr);
}
@@ -232,7 +217,8 @@ CURLcode curl_easy_perform(CURL *curl)
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" \
"0123456789"
-char *curl_escape(char *str,int length)
+char *
+curl_escape(char *str,int length)
{
int len,max,idx,enc_idx=0;
char *enc;
@@ -282,7 +268,8 @@ char *curl_escape(char *str,int length)
return enc;
}
-void curl_free(char *ptr)
+void
+curl_free(char *ptr)
{
free(ptr);
}