Add for_encryption parameter to updateOOMData
authorAndre Heinecke <aheinecke@gnupg.org>
Thu, 11 Apr 2019 12:39:37 +0000 (14:39 +0200)
committerAndre Heinecke <aheinecke@gnupg.org>
Thu, 11 Apr 2019 12:39:37 +0000 (14:39 +0200)
* src/mail.cpp (Mail::updateOOMData_o): Add for_encryption parameter.
(Mail::prepareEncrypt_o): Use it.

--
Now that we need to send encrypted drafts we can no longer
rely on isCryptoMail to determine if we are reading or writing
a mail.

src/mail.cpp
src/mail.h

index d123891..d2263c3 100644 (file)
@@ -1733,13 +1733,15 @@ Mail::wipe_o (bool force)
 }
 
 int
-Mail::updateOOMData_o ()
+Mail::updateOOMData_o (bool for_encryption)
 {
   TSTART;
   char *buf = nullptr;
   log_debug ("%s:%s", SRCNAME, __func__);
 
-  if (!isCryptoMail () || isDraftEncrypt ())
+  for_encryption |= !isCryptoMail();
+
+  if (for_encryption)
     {
       /* Update the body format. */
       m_is_html_alternative = get_oom_int (m_mailitem, "BodyFormat") > 1;
@@ -1757,10 +1759,7 @@ Mail::updateOOMData_o ()
 
       m_cached_recipients = getRecipients_o ();
     }
-  /* For some reason outlook may store the recipient address
-     in the send using account field. If we have SMTP we prefer
-     the SenderEmailAddress string. */
-  if (isCryptoMail ())
+  else
     {
       /* This is the case where we are reading a mail and not composing.
          When composing we need to use the SendUsingAccount because if
index 9fc7ce8..9ba0a88 100644 (file)
@@ -281,10 +281,14 @@ public:
    * store the sender address for later events that do not allow us to
    * access the OOM but enable us to work with the underlying MAPI structure.
    *
+   * for_encryption can be used to override that data should be collected
+   * for encryption. Otherwise it depends on "isCryptoMail" to decide which
+   * data should be collected.
+   *
    * It also updated the is_html_alternative value.
    *
    * @returns 0 on success */
-  int updateOOMData_o ();
+  int updateOOMData_o (bool for_encryption = false);
 
   /** @brief get sender SMTP address (UTF-8 encoded).
    *