summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKartikaya Gupta <kats@seldon.staktrace.com>2016-12-04 22:50:45 -0500
committerKartikaya Gupta <kats@seldon.staktrace.com>2016-12-04 22:50:45 -0500
commit73497e78a920e1eb02666b50da5c040e491f380f (patch)
treecc48d99f34eaf62e1677986a0f9ba48b2418f534 /src
parentf4d291efa8974a7fa513620dae9aa8a7eb9c4b48 (diff)
Followup to 9f8013c2 (fix for issue #7) - deal with empty messages
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 6ba0ce3..f362919 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -447,7 +447,9 @@ pub fn parse_headers(raw_data: &[u8]) -> Result<(Vec<MailHeader>, usize), MailPa
let mut headers: Vec<MailHeader> = Vec::new();
let mut ix = 0;
loop {
- if raw_data[ix] == b'\n' {
+ if ix >= raw_data.len() {
+ break;
+ } else if raw_data[ix] == b'\n' {
ix = ix + 1;
break;
} else if raw_data[ix] == b'\r' {
@@ -462,9 +464,6 @@ pub fn parse_headers(raw_data: &[u8]) -> Result<(Vec<MailHeader>, usize), MailPa
let (header, ix_next) = try!(parse_header(&raw_data[ix..]));
headers.push(header);
ix = ix + ix_next;
- if ix >= raw_data.len() {
- break;
- }
}
Ok((headers, ix))
}
@@ -976,4 +975,10 @@ mod tests {
assert_eq!(mail.subparts[0].ctype.mimetype, "text/plain");
assert_eq!(mail.subparts[0].get_body().unwrap(), "");
}
+
+ #[test]
+ fn test_empty() {
+ let mail = parse_mail("".as_bytes()).unwrap();
+ assert_eq!(mail.get_body().unwrap(), "");
+ }
}