aboutsummaryrefslogtreecommitdiffstats
path: root/keyserver/gpgkeys_hkp.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--keyserver/gpgkeys_hkp.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/keyserver/gpgkeys_hkp.c b/keyserver/gpgkeys_hkp.c
index 514205adf..3bf5d2e31 100644
--- a/keyserver/gpgkeys_hkp.c
+++ b/keyserver/gpgkeys_hkp.c
@@ -79,7 +79,7 @@ urlencode_filter( void *opaque, int control,
int
send_key(int *eof)
{
- int rc,gotit=0,ret=KEYSERVER_INTERNAL_ERROR;
+ int rc,begin=0,end=0,ret=KEYSERVER_INTERNAL_ERROR;
char keyid[17];
char *request;
struct http_context hd;
@@ -87,6 +87,8 @@ send_key(int *eof)
IOBUF temp = iobuf_temp();
char line[MAX_LINE];
+ memset(&hd,0,sizeof(hd));
+
request=malloc(strlen(host)+100);
if(!request)
{
@@ -101,11 +103,11 @@ send_key(int *eof)
while(fgets(line,MAX_LINE,input)!=NULL)
if(sscanf(line,"KEY %16s BEGIN\n",keyid)==1)
{
- gotit=1;
+ begin=1;
break;
}
- if(!gotit)
+ if(!begin)
{
/* i.e. eof before the KEY BEGIN was found. This isn't an
error. */
@@ -114,14 +116,12 @@ send_key(int *eof)
goto fail;
}
- gotit=0;
-
/* Now slurp up everything until we see the END */
while(fgets(line,MAX_LINE,input))
if(sscanf(line,"KEY %16s END\n",keyid)==1)
{
- gotit=1;
+ end=1;
break;
}
else
@@ -131,7 +131,7 @@ send_key(int *eof)
goto fail;
}
- if(!gotit)
+ if(!end)
{
fprintf(console,"gpgkeys: no KEY %s END found\n",keyid);
*eof=1;
@@ -176,7 +176,6 @@ send_key(int *eof)
if((status/100)!=2)
{
fprintf(console,"gpgkeys: remote server returned error %d\n",status);
- fprintf(output,"KEY %s FAILED %d\n",keyid,ret);
goto fail;
}
@@ -189,6 +188,9 @@ send_key(int *eof)
iobuf_close(temp);
http_close(&hd);
+ if(ret!=0 && begin)
+ fprintf(output,"KEY %s FAILED %d\n",keyid,ret);
+
return ret;
}