Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/mimefactory.rs
Original file line number Diff line number Diff line change
Expand Up @@ -862,12 +862,12 @@ impl MimeFactory {

pub async fn from_mdn(
context: &Context,
from_addr: &str,
from_id: ContactId,
rfc724_mid: String,
additional_msg_ids: Vec<String>,
) -> Result<MimeFactory> {
let contact = Contact::get_by_id(context, from_id).await?;
let from_addr = context.get_primary_self_addr().await?;

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The most interesting part is removal of this get_primary_self_addr(), it is replaced with from_addr passed from outside that is the actual From address.

let timestamp = time();

let addr = contact.get_addr().to_string();
Expand All @@ -890,7 +890,7 @@ impl MimeFactory {
};

let res = MimeFactory {
from_addr,
from_addr: from_addr.to_string(),
from_displayname: "".to_string(),
sender_displayname: None,
selfstatus: "".to_string(),
Expand Down
22 changes: 16 additions & 6 deletions src/mimefactory/mimefactory_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,7 @@ async fn test_mdn_create_encrypted() -> Result<()> {
.set_config(Config::Displayname, Some("Alice Exampleorg"))
.await?;
let bob = tcm.bob().await;
let bob_addr = bob.get_primary_self_addr().await?;
bob.allow_unencrypted().await?;
bob.set_config(Config::Displayname, Some("Bob Examplenet"))
.await?;
Expand All @@ -304,10 +305,15 @@ async fn test_mdn_create_encrypted() -> Result<()> {

let rcvd = bob.recv_msg(&sent).await;
message::markseen_msgs(&bob, vec![rcvd.id]).await?;
let mimefactory =
MimeFactory::from_mdn(&bob, rcvd.from_id, rcvd.rfc724_mid.clone(), vec![]).await?;
let mimefactory = MimeFactory::from_mdn(
&bob,
&bob_addr,
rcvd.from_id,
rcvd.rfc724_mid.clone(),
vec![],
)
.await?;
assert!(!mimefactory.will_be_encrypted());
let bob_addr = bob.get_primary_self_addr().await?;
let rendered_msg = mimefactory.render(&bob, &bob_addr).await?;

assert!(!rendered_msg.message.contains("Bob Examplenet"));
Expand All @@ -319,7 +325,8 @@ async fn test_mdn_create_encrypted() -> Result<()> {
let rcvd = tcm.send_recv(&alice, &bob, "Heyho").await;
message::markseen_msgs(&bob, vec![rcvd.id]).await?;

let mimefactory = MimeFactory::from_mdn(&bob, rcvd.from_id, rcvd.rfc724_mid, vec![]).await?;
let mimefactory =
MimeFactory::from_mdn(&bob, &bob_addr, rcvd.from_id, rcvd.rfc724_mid, vec![]).await?;
assert!(mimefactory.will_be_encrypted());
let bob_addr = bob.get_primary_self_addr().await?;
let rendered_msg = mimefactory.render(&bob, &bob_addr).await?;
Expand Down Expand Up @@ -349,7 +356,9 @@ async fn test_mdn_sent_to_all_relays() -> Result<()> {
)?;
import_public_key(alice, &bob_public_key).await?;

let mimefactory = MimeFactory::from_mdn(alice, rcvd.from_id, rcvd.rfc724_mid, vec![]).await?;
let alice_addr = alice.get_primary_self_addr().await?;
let mimefactory =
MimeFactory::from_mdn(alice, &alice_addr, rcvd.from_id, rcvd.rfc724_mid, vec![]).await?;
let mut recipients = mimefactory.recipients();
recipients.sort();
assert_eq!(recipients, vec!["bob@example.net", "bob@relay2.example"]);
Expand All @@ -364,8 +373,9 @@ async fn test_mdn_autocrypt_throttle() -> Result<()> {
alice: &TestContext,
rcvd: &Message,
) -> Result<bool> {
let mf = MimeFactory::from_mdn(bob, rcvd.from_id, rcvd.rfc724_mid.clone(), vec![]).await?;
let addr = bob.get_primary_self_addr().await?;
let mf = MimeFactory::from_mdn(bob, &addr, rcvd.from_id, rcvd.rfc724_mid.clone(), vec![])
.await?;
let rendered_msg = mf.render(bob, &addr).await?;
let mime = MimeMessage::from_bytes(alice, rendered_msg.message.as_bytes()).await?;
Ok(mime.autocrypt_fingerprint.is_some())
Expand Down
11 changes: 6 additions & 5 deletions src/smtp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -687,8 +687,14 @@ async fn send_mdn_rfc724_mid(
)
.await?;

let from = smtp
.from
.as_ref()
.context("No From address, not connected")?
.to_string();
let mimefactory = MimeFactory::from_mdn(
context,
&from,
contact_id,
rfc724_mid.to_string(),
additional_rfc724_mids.clone(),
Expand All @@ -700,11 +706,6 @@ async fn send_mdn_rfc724_mid(
} else {
mimefactory.recipients()
};
let from = smtp
.from
.as_ref()
.context("No From address, not connected")?
.to_string();
let rendered_msg = Box::pin(mimefactory.render(context, &from)).await?;
let body = rendered_msg.message;

Expand Down
3 changes: 2 additions & 1 deletion src/test_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -852,7 +852,8 @@ ORDER BY id"

/// Receives a read receipt from `reader`, who received `msg`.
pub async fn recv_mdn(&self, reader: &TestContext, msg: &Message) -> Result<()> {
let mdn = MimeFactory::from_mdn(reader, msg.from_id, msg.rfc724_mid.clone(), vec![])
let addr = reader.get_primary_self_addr().await?;
let mdn = MimeFactory::from_mdn(reader, &addr, msg.from_id, msg.rfc724_mid.clone(), vec![])
.await?
.render(reader, &reader.get_primary_self_addr().await?)
.await?
Expand Down
Loading