From 6b62fed6fae408b16e8ab919061375006171d6e2 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Thu, 17 Sep 2026 20:42:38 +0200 Subject: [PATCH] feat: a single NDN does not mark a group message as failed --- src/mimeparser.rs | 23 +++++++++++------------ src/receive_imf/receive_imf_tests.rs | 6 ++---- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/src/mimeparser.rs b/src/mimeparser.rs index c296a49b9..4b44014c1 100644 --- a/src/mimeparser.rs +++ b/src/mimeparser.rs @@ -2540,19 +2540,18 @@ async fn handle_ndn( for msg_id in msg_ids { let mut message = Message::load_from_db(context, msg_id).await?; let chat = Chat::load_from_db(context, message.chat_id).await?; - if chat.typ == constants::Chattype::OutBroadcast { - continue; + if chat.typ == constants::Chattype::Single { + let aggregated_error = message + .error + .as_ref() + .map(|err| format!("{err}\n\n{err_msg}")); + set_msg_failed( + context, + &mut message, + aggregated_error.as_ref().unwrap_or(err_msg), + ) + .await?; } - let aggregated_error = message - .error - .as_ref() - .map(|err| format!("{err}\n\n{err_msg}")); - set_msg_failed( - context, - &mut message, - aggregated_error.as_ref().unwrap_or(err_msg), - ) - .await?; } Ok(()) diff --git a/src/receive_imf/receive_imf_tests.rs b/src/receive_imf/receive_imf_tests.rs index a711f7974..c4489d942 100644 --- a/src/receive_imf/receive_imf_tests.rs +++ b/src/receive_imf/receive_imf_tests.rs @@ -726,6 +726,7 @@ async fn test_resend_after_ndn() -> Result<()> { Ok(()) } +// an NDN in a group does not make the whole message as failed #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_parse_ndn_group_msg() -> Result<()> { let t = TestContext::new().await; @@ -758,7 +759,7 @@ async fn test_parse_ndn_group_msg() -> Result<()> { let msg = Message::load_from_db(&t, msg_id).await?; - assert_eq!(msg.state, MessageState::OutFailed); + assert_eq!(msg.state, MessageState::OutDelivered); let msgs = chat::get_chat_msgs(&t, msg.chat_id).await?; assert!(matches!( @@ -766,9 +767,6 @@ async fn test_parse_ndn_group_msg() -> Result<()> { ChatItem::Message { msg_id } if msg_id == msg.id )); - t.assert_warn("Delivery Status Notification (Failure)") - .await; - Ok(()) }