From 1da52d7d1d6feb19ad6dbec2463d2f1af54db4ad Mon Sep 17 00:00:00 2001 From: link2xt Date: Mon, 28 Aug 2023 00:41:15 +0000 Subject: [PATCH] refactor: use split_once() instead of regexp in `heuristically_parse_ndn` Reduce dependency on the huge `regex` crate. --- src/mimeparser.rs | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/mimeparser.rs b/src/mimeparser.rs index 6131856c2..3cd305068 100644 --- a/src/mimeparser.rs +++ b/src/mimeparser.rs @@ -12,7 +12,6 @@ use deltachat_derive::{FromSql, ToSql}; use format_flowed::unformat_flowed; use lettre_email::mime::{self, Mime}; use mailparse::{addrparse_header, DispositionType, MailHeader, MailHeaderMap, SingleInfo}; -use once_cell::sync::Lazy; use crate::aheader::{Aheader, EncryptPreference}; use crate::blob::BlobObject; @@ -1617,25 +1616,21 @@ impl MimeMessage { false }; if maybe_ndn && self.delivery_report.is_none() { - static RE: Lazy = - Lazy::new(|| regex::Regex::new(r"Message-ID:(.*)").unwrap()); - for captures in self + for original_message_id in self .parts .iter() .filter_map(|part| part.msg_raw.as_ref()) .flat_map(|part| part.lines()) - .filter_map(|line| RE.captures(line)) + .filter_map(|line| line.split_once("Message-ID:")) + .filter_map(|(_, message_id)| parse_message_id(message_id).ok()) { - if let Ok(original_message_id) = parse_message_id(&captures[1]) { - if let Ok(Some(_)) = - message::rfc724_mid_exists(context, &original_message_id).await - { - self.delivery_report = Some(DeliveryReport { - rfc724_mid: original_message_id, - failed_recipient: None, - failure: true, - }) - } + if let Ok(Some(_)) = message::rfc724_mid_exists(context, &original_message_id).await + { + self.delivery_report = Some(DeliveryReport { + rfc724_mid: original_message_id, + failed_recipient: None, + failure: true, + }) } } }