[git] GnuPG - branch, master, updated. gnupg-2.2.7-207-gbee65ed

by Werner Koch cvs at cvs.gnupg.org
Fri Sep 7 11:58:24 CEST 2018


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "The GNU Privacy Guard".

The branch, master has been updated
       via  bee65edfbc8cc2c369e5941cc9d1a01a0519b388 (commit)
      from  04b56eff118ec34432c368b87e724bce1ac683f9 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit bee65edfbc8cc2c369e5941cc9d1a01a0519b388
Author: Werner Koch <wk at gnupg.org>
Date:   Fri Sep 7 11:48:18 2018 +0200

    dirmngr: Emit SOURCE status also on NO_DATA.
    
    * dirmngr/ks-engine-hkp.c (ks_hkp_search): Send SOURCE status also on
    NO DATA error.
    (ks_hkp_get): Ditto.
    * g10/call-dirmngr.c (gpg_dirmngr_ks_search): Print "data source" info
    also on error.
    (gpg_dirmngr_ks_get): Ditto.
    --
    
    If a keyserver does not return any data it can be useful to know which
    keyserver out of the pool answered.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/dirmngr/ks-engine-hkp.c b/dirmngr/ks-engine-hkp.c
index 49a57eb..3c7a8a0 100644
--- a/dirmngr/ks-engine-hkp.c
+++ b/dirmngr/ks-engine-hkp.c
@@ -1491,7 +1491,11 @@ ks_hkp_search (ctrl_t ctrl, parsed_uri_t uri, const char *pattern,
       goto again;
     }
   if (err)
-    goto leave;
+    {
+      if (gpg_err_code (err) == GPG_ERR_NO_DATA)
+        dirmngr_status (ctrl, "SOURCE", hostport, NULL);
+      goto leave;
+    }
 
   err = dirmngr_status (ctrl, "SOURCE", hostport, NULL);
   if (err)
@@ -1626,7 +1630,11 @@ ks_hkp_get (ctrl_t ctrl, parsed_uri_t uri, const char *keyspec, estream_t *r_fp)
       goto again;
     }
   if (err)
-    goto leave;
+    {
+      if (gpg_err_code (err) == GPG_ERR_NO_DATA)
+        dirmngr_status (ctrl, "SOURCE", hostport, NULL);
+      goto leave;
+    }
 
   err = dirmngr_status (ctrl, "SOURCE", hostport, NULL);
   if (err)
diff --git a/g10/call-dirmngr.c b/g10/call-dirmngr.c
index 11663b9..388da3d 100644
--- a/g10/call-dirmngr.c
+++ b/g10/call-dirmngr.c
@@ -608,6 +608,12 @@ gpg_dirmngr_ks_search (ctrl_t ctrl, const char *searchstr,
                         NULL, NULL, ks_status_cb, &stparm);
   if (!err)
     err = cb (cb_value, 0, NULL);  /* Send EOF.  */
+  else if (parm.stparm->source)
+    {
+      /* Error but we received a SOURCE status.  Tell via callback but
+       * ignore errors.  */
+      parm.data_cb (parm.data_cb_value, 1, parm.stparm->source);
+    }
 
   xfree (get_membuf (&parm.saveddata, NULL));
   xfree (parm.helpbuf);
@@ -650,6 +656,7 @@ ks_get_data_cb (void *opaque, const void *data, size_t datalen)
 
    If R_SOURCE is not NULL the source of the data is stored as a
    malloced string there.  If a source is not known NULL is stored.
+   Note that this may even be returned after an error.
 
    If there are too many patterns the function returns an error.  That
    could be fixed by issuing several search commands or by
@@ -737,13 +744,13 @@ gpg_dirmngr_ks_get (ctrl_t ctrl, char **pattern,
   *r_fp = parm.memfp;
   parm.memfp = NULL;
 
-  if (r_source)
+
+ leave:
+  if (r_source && stparm.source)
     {
       *r_source = stparm.source;
       stparm.source = NULL;
     }
-
- leave:
   es_fclose (parm.memfp);
   xfree (stparm.source);
   xfree (line);

-----------------------------------------------------------------------

Summary of changes:
 dirmngr/ks-engine-hkp.c | 12 ++++++++++--
 g10/call-dirmngr.c      | 13 ++++++++++---
 2 files changed, 20 insertions(+), 5 deletions(-)


hooks/post-receive
-- 
The GNU Privacy Guard
http://git.gnupg.org




More information about the Gnupg-commits mailing list