aboutsummaryrefslogtreecommitdiffstats
path: root/keyserver/gpgkeys_hkp.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyserver/gpgkeys_hkp.c')
-rw-r--r--keyserver/gpgkeys_hkp.c87
1 files changed, 76 insertions, 11 deletions
diff --git a/keyserver/gpgkeys_hkp.c b/keyserver/gpgkeys_hkp.c
index bc2f0447e..309e728c2 100644
--- a/keyserver/gpgkeys_hkp.c
+++ b/keyserver/gpgkeys_hkp.c
@@ -1,6 +1,6 @@
/* gpgkeys_hkp.c - talk to an HKP keyserver
* Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- * 2009, 2012 Free Software Foundation, Inc.
+ * 2009, 2012, 2013 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@@ -312,15 +312,49 @@ get_key(char *getkey)
}
else
{
+ long status = 0;
+
curl_writer_finalize(&ctx);
- if(!ctx.flags.done)
+
+ curl_easy_getinfo (curl, CURLINFO_RESPONSE_CODE, &status);
+
+ if (opt->verbose > 2)
+ fprintf (console, "gpgkeys: HTTP response code is %ld\n", status);
+
+ if (status == 200)
+ {
+ if (!ctx.flags.done)
+ {
+ if (ctx.flags.begun)
+ {
+ fprintf (console, "gpgkeys: key %s partially retrieved"
+ " (probably corrupt)\n", getkey);
+ fprintf (output, "\nKEY 0x%s FAILED %d\n",
+ getkey, KEYSERVER_KEY_INCOMPLETE);
+ }
+ else
+ {
+ fprintf (console, "gpgkeys: key %s can't be retrieved\n",
+ getkey);
+ fprintf (output, "\nKEY 0x%s FAILED %d\n",
+ getkey, KEYSERVER_GENERAL_ERROR);
+ }
+ }
+ else
+ fprintf (output, "\nKEY 0x%s END\n", getkey);
+ }
+ else if (status == 404)
{
- fprintf(console,"gpgkeys: key %s not found on keyserver\n",getkey);
- fprintf(output,"\nKEY 0x%s FAILED %d\n",
- getkey,KEYSERVER_KEY_NOT_FOUND);
+ fprintf (console, "gpgkeys: key %s not found on keyserver\n", getkey);
+ fprintf (output, "\nKEY 0x%s FAILED %d\n",
+ getkey, KEYSERVER_KEY_NOT_FOUND);
}
else
- fprintf(output,"\nKEY 0x%s END\n",getkey);
+ {
+ fprintf (console, "gpgkeys: key %s can't be retrieved\n", getkey);
+ fprintf (output, "\nKEY 0x%s FAILED %d\n",
+ getkey, KEYSERVER_GENERAL_ERROR);
+ }
}
return KEYSERVER_OK;
@@ -383,16 +417,47 @@ get_name(const char *getkey)
}
else
{
+ long status = 0;
+
curl_writer_finalize(&ctx);
- if(!ctx.flags.done)
+
+ curl_easy_getinfo (curl, CURLINFO_RESPONSE_CODE, &status);
+
+ if (opt->verbose > 2)
+ fprintf (console, "gpgkeys: HTTP response code is %ld\n", status);
+
+ if (status == 200)
+ {
+ if (!ctx.flags.done)
+ {
+ if (ctx.flags.begun)
+ {
+ fprintf (console, "gpgkeys: key %s partially retrieved"
+ " (probably corrupt)\n", getkey);
+ ret = KEYSERVER_KEY_INCOMPLETE;
+ }
+ else
+ {
+ fprintf (console, "gpgkeys: key %s can't be retrieved\n",
+ getkey);
+ ret = KEYSERVER_GENERAL_ERROR;
+ }
+ }
+ else
+ {
+ fprintf (output, "\nNAME %s END\n", getkey);
+ ret = KEYSERVER_OK;
+ }
+ }
+ else if (status == 404)
{
- fprintf(console,"gpgkeys: key %s not found on keyserver\n",getkey);
- ret=KEYSERVER_KEY_NOT_FOUND;
+ fprintf (console, "gpgkeys: key %s not found on keyserver\n", getkey);
+ ret = KEYSERVER_KEY_NOT_FOUND;
}
else
{
- fprintf(output,"\nNAME %s END\n",getkey);
- ret=KEYSERVER_OK;
+ fprintf (console, "gpgkeys: key %s can't be retrieved\n", getkey);
+ ret = KEYSERVER_GENERAL_ERROR;
}
}