Skip to content

Commit

Permalink
Fix Received struct serialization for bincode compatibility
Browse files Browse the repository at this point in the history
  • Loading branch information
mdecimus committed Nov 9, 2023
1 parent b6c080f commit 28a9b67
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 65 deletions.
72 changes: 12 additions & 60 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -521,82 +521,34 @@ pub struct DateTime {
#[derive(Debug, Clone, PartialEq, Eq, Default)]
#[cfg_attr(feature = "serde_support", derive(Serialize, Deserialize))]
pub struct Received<'x> {
#[cfg_attr(
feature = "serde_support",
serde(skip_serializing_if = "Option::is_none"),
serde(default)
)]
#[cfg_attr(feature = "serde_support", serde(default))]
pub from: Option<Host<'x>>,
#[cfg_attr(
feature = "serde_support",
serde(skip_serializing_if = "Option::is_none"),
serde(default)
)]
#[cfg_attr(feature = "serde_support", serde(default))]
pub from_ip: Option<IpAddr>,
#[cfg_attr(
feature = "serde_support",
serde(skip_serializing_if = "Option::is_none"),
serde(default)
)]
#[cfg_attr(feature = "serde_support", serde(default))]
pub from_iprev: Option<Cow<'x, str>>,
#[cfg_attr(
feature = "serde_support",
serde(skip_serializing_if = "Option::is_none"),
serde(default)
)]
#[cfg_attr(feature = "serde_support", serde(default))]
pub by: Option<Host<'x>>,
#[cfg_attr(
feature = "serde_support",
serde(skip_serializing_if = "Option::is_none"),
serde(default)
)]
#[cfg_attr(feature = "serde_support", serde(default))]
pub for_: Option<Cow<'x, str>>,
#[cfg_attr(
feature = "serde_support",
serde(skip_serializing_if = "Option::is_none"),
serde(default)
)]
#[cfg_attr(feature = "serde_support", serde(default))]
pub with: Option<Protocol>,
#[cfg_attr(
feature = "serde_support",
serde(skip_serializing_if = "Option::is_none"),
serde(default)
)]
#[cfg_attr(feature = "serde_support", serde(default))]
pub tls_version: Option<TlsVersion>,
#[cfg_attr(
feature = "serde_support",
serde(skip_serializing_if = "Option::is_none"),
serde(default)
)]
#[cfg_attr(feature = "serde_support", serde(default))]
pub tls_cipher: Option<Cow<'x, str>>,
#[cfg_attr(
feature = "serde_support",
serde(skip_serializing_if = "Option::is_none")
)]
pub id: Option<Cow<'x, str>>,
#[cfg_attr(
feature = "serde_support",
serde(skip_serializing_if = "Option::is_none"),
serde(default)
)]
#[cfg_attr(feature = "serde_support", serde(default))]
pub ident: Option<Cow<'x, str>>,
#[cfg_attr(
feature = "serde_support",
serde(skip_serializing_if = "Option::is_none"),
serde(default)
)]
#[cfg_attr(feature = "serde_support", serde(default))]
pub helo: Option<Host<'x>>,
#[cfg_attr(
feature = "serde_support",
serde(skip_serializing_if = "Option::is_none"),
serde(default)
)]
#[cfg_attr(feature = "serde_support", serde(default))]
pub helo_cmd: Option<Greeting>,
#[cfg_attr(
feature = "serde_support",
serde(skip_serializing_if = "Option::is_none"),
serde(default)
)]
#[cfg_attr(feature = "serde_support", serde(default))]
pub via: Option<Cow<'x, str>>,
pub date: Option<DateTime>,
}
Expand Down
10 changes: 5 additions & 5 deletions src/parsers/message.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const MAX_NESTED_ENCODED: usize = 3;
#[derive(Debug, PartialEq, Default)]
enum MimeType {
MultipartMixed,
MultipartAlernative,
MultipartAlternative,
MultipartRelated,
MultipartDigest,
TextPlain,
Expand All @@ -49,7 +49,7 @@ fn mime_type(
false,
match content_type.subtype() {
Some("mixed") => MimeType::MultipartMixed,
Some("alternative") => MimeType::MultipartAlernative,
Some("alternative") => MimeType::MultipartAlternative,
Some("related") => MimeType::MultipartRelated,
Some("digest") => MimeType::MultipartDigest,
_ => MimeType::Other,
Expand Down Expand Up @@ -170,7 +170,7 @@ impl MessageParser {
let part_id = message.parts.len();
let new_state = MessageParserState {
in_alternative: state.in_alternative
|| mime_type == MimeType::MultipartAlernative,
|| mime_type == MimeType::MultipartAlternative,
mime_type,
mime_boundary: mime_boundary.as_bytes().to_vec().into(),
html_parts: message.html_body.len(),
Expand Down Expand Up @@ -283,7 +283,7 @@ impl MessageParser {
.map_or_else(|| true, |c| !c.has_attribute("name")))));

let (add_to_html, add_to_text) =
if let MimeType::MultipartAlernative = state.mime_type {
if let MimeType::MultipartAlternative = state.mime_type {
match mime_type {
MimeType::TextHtml => (true, false),
MimeType::TextPlain => (false, true),
Expand Down Expand Up @@ -440,7 +440,7 @@ impl MessageParser {
if stream.is_multipart_end() {
// End of MIME part reached

if MimeType::MultipartAlernative == state.mime_type
if MimeType::MultipartAlternative == state.mime_type
&& state.need_html_body
&& state.need_text_body
{
Expand Down

0 comments on commit 28a9b67

Please sign in to comment.