Ignore temporary recipient resolve errors
authorAndre Heinecke <aheinecke@intevation.de>
Thu, 6 Sep 2018 08:25:40 +0000 (10:25 +0200)
committerAndre Heinecke <aheinecke@intevation.de>
Thu, 6 Sep 2018 08:25:40 +0000 (10:25 +0200)
* src/cryptocontroller.cpp (CryptController::resolve_keys):
Add unlikely error handling if recipients could not be resolved here.
* src/mail.cpp (Mail::getRecipients_o): Ignore error when
getting recipients.

--
When editing the recipients of a draft Outlook still has an
recipient object for the former recipient but does not provide
properties on it. So the address resolution fails. We can
treat the mail as having no recipients and only have a
fatal error if we can't resolve recipients in the cryptcontroller.

GnuPG-Bug-Id: T4129

src/cryptcontroller.cpp
src/mail.cpp

index afeb24d..df35d70 100644 (file)
@@ -420,6 +420,23 @@ CryptController::resolve_keys ()
 {
   m_recipients.clear();
 
+  if (!m_recipient_addrs.size())
+    {
+      /* Should not happen. But we add it for better bug reports. */
+      const char *bugmsg = utf8_gettext ("Operation failed.\n\n"
+              "This is usually caused by a bug in GpgOL or an error in your setup.\n"
+              "Please see https://www.gpg4win.org/reporting-bugs.html "
+              "or ask your Administrator for support.");
+      char *buf;
+      gpgrt_asprintf (&buf, "Failed to resolve recipients.\n\n%s\n", bugmsg);
+      memdbg_alloc (buf);
+      gpgol_message_box (get_active_hwnd (),
+                         buf,
+                         _("GpgOL"), MB_OK);
+      xfree(buf);
+      return -1;
+    }
+
   if (opt.autoresolve && !resolve_keys_cached ())
     {
       log_debug ("%s:%s: resolved keys through the cache",
index 7cd887a..d0d2d68 100644 (file)
@@ -1858,18 +1858,9 @@ Mail::getRecipients_o () const
 
   if (err)
     {
-      /* Should not happen. But we add it for better bug reports. */
-      const char *bugmsg = utf8_gettext ("Operation failed.\n\n"
-              "This is usually caused by a bug in GpgOL or an error in your setup.\n"
-              "Please see https://www.gpg4win.org/reporting-bugs.html "
-              "or ask your Administrator for support.");
-      char *buf;
-      gpgrt_asprintf (&buf, "Failed to resolve recipients.\n\n%s\n", bugmsg);
-      memdbg_alloc (buf);
-      gpgol_message_box (get_active_hwnd (),
-                         buf,
-                         _("GpgOL"), MB_OK);
-      xfree(buf);
+      log_debug ("%s:%s: Failed to resolve recipients at this time.",
+                 SRCNAME, __func__);
+
     }
 
   return ret;