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 10:00:36 +0000 (12:00 +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
(cherry picked from commit 3c0a66e402e84c0f8c5db4d2219eb8da6e5c0cac)

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 06f58cd..a3ec7ac 100644 (file)
@@ -1856,18 +1856,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;