aboutsummaryrefslogtreecommitdiffstats
path: root/sm/call-dirmngr.c
diff options
context:
space:
mode:
Diffstat (limited to 'sm/call-dirmngr.c')
-rw-r--r--sm/call-dirmngr.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/sm/call-dirmngr.c b/sm/call-dirmngr.c
index 9675d0404..5dd8a3938 100644
--- a/sm/call-dirmngr.c
+++ b/sm/call-dirmngr.c
@@ -425,6 +425,51 @@ unhexify_fpr (const char *hexstr, unsigned char *fpr)
}
+/* This is a helper to print diagnostics from dirmngr indicated by
+ * WARNING or NOTE status lines. Returns true if the status LINE was
+ * processed. */
+static int
+warning_and_note_printer (const char *line)
+{
+ const char *s, *s2;
+ const char *warn = NULL;
+ int is_note = 0;
+
+ if ((s = has_leading_keyword (line, "WARNING")))
+ ;
+ else if ((is_note = !!(s = has_leading_keyword (line, "NOTE"))))
+ ;
+ else
+ return 0; /* Nothing to process. */
+
+ if ((s2 = has_leading_keyword (s, "no_crl_due_to_tor"))
+ || (s2 = has_leading_keyword (s, "no_ldap_due_to_tor"))
+ || (s2 = has_leading_keyword (s, "no_ocsp_due_to_tor")))
+ warn = _("Tor might be in use - network access is limited");
+ else
+ warn = NULL;
+
+ if (warn)
+ {
+ if (is_note)
+ log_info (_("Note: %s\n"), warn);
+ else
+ log_info (_("WARNING: %s\n"), warn);
+ if (s2)
+ {
+ while (*s2 && !spacep (s2))
+ s2++;
+ while (*s2 && spacep (s2))
+ s2++;
+ if (*s2)
+ gpgsm_print_further_info ("%s", s2);
+ }
+ }
+
+ return 1; /* Status line processed. */
+}
+
+
static gpg_error_t
isvalid_status_cb (void *opaque, const char *line)
{
@@ -446,6 +491,10 @@ isvalid_status_cb (void *opaque, const char *line)
if (!*s || !unhexify_fpr (s, parm->fpr))
parm->seen++; /* Bump it to indicate an error. */
}
+ else if (warning_and_note_printer (line))
+ {
+ }
+
return 0;
}
@@ -722,6 +771,10 @@ lookup_status_cb (void *opaque, const char *line)
gpgsm_status (parm->ctrl, STATUS_TRUNCATED, line);
}
}
+ else if (warning_and_note_printer (line))
+ {
+ }
+
return 0;
}
@@ -969,6 +1022,10 @@ run_command_status_cb (void *opaque, const char *line)
return gpg_error (GPG_ERR_ASS_CANCELED);
}
}
+ else if (warning_and_note_printer (line))
+ {
+ }
+
return 0;
}