From a29e39f5ef6f033b9ecf49006713d5964950b602 Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Sat, 6 Apr 2019 08:57:00 +0300 Subject: [PATCH] ui: fix `editing messages duplicates headers` closes #94 --- melib/src/mailbox/email/compose.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/melib/src/mailbox/email/compose.rs b/melib/src/mailbox/email/compose.rs index f24f27d35..2c5aa6321 100644 --- a/melib/src/mailbox/email/compose.rs +++ b/melib/src/mailbox/email/compose.rs @@ -14,8 +14,6 @@ use fnv::FnvHashMap; #[derive(Debug, PartialEq, Clone)] pub struct Draft { - // FIXME: Preserve header order - // FIXME: Validate headers, allow custom ones headers: FnvHashMap, header_order: Vec, body: String, @@ -97,9 +95,13 @@ impl Draft { //TODO: Inform user if error { let bytes = op.as_bytes().unwrap_or(&[]); - for (h, v) in envelope.headers(bytes).unwrap_or_else(|_| Vec::new()) { - ret.header_order.push(h.into()); - ret.headers_mut().insert(h.into(), v.into()); + for (k, v) in envelope.headers(bytes).unwrap_or_else(|_| Vec::new()) { + if ignore_header(k.as_bytes()) { + continue; + } + if ret.headers.insert(k.into(), v.into()).is_none() { + ret.header_order.push(k.into()); + } } } @@ -226,6 +228,7 @@ fn ignore_header(header: &[u8]) -> bool { b"Bcc" => false, b"In-Reply-To" => false, b"References" => false, + b"MIME-Version" => true, h if h.starts_with(b"X-") => false, _ => true, }