aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2013-11-13 00:23:38 -0800
committerGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2013-11-13 00:23:38 -0800
commit257a7818f58ee67953e91e381dc3e28a41f14845 (patch)
tree4ad209316b74fd72896b15433bf4f084e8906467 /src
parent4ed4d64eab9871464911bfa1dac1c86d522dafa2 (diff)
Fixed #454: fixed parsing of headers
Diffstat (limited to 'src')
-rw-r--r--src/core/rfc822/MCMessageParser.cc21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/core/rfc822/MCMessageParser.cc b/src/core/rfc822/MCMessageParser.cc
index 435841f5..725f3529 100644
--- a/src/core/rfc822/MCMessageParser.cc
+++ b/src/core/rfc822/MCMessageParser.cc
@@ -32,15 +32,22 @@ MessageParser::MessageParser(Data * data)
init();
mData = (Data *) data->retain();
- mailmessage * msg;
- struct mailmime * mime;
-
- msg = data_message_init(data->bytes(), data->length());
- mailmessage_get_bodystructure(msg, &mime);
+ mailmessage * msg;
+ struct mailmime * mime;
+
+ msg = data_message_init(data->bytes(), data->length());
+ mailmessage_get_bodystructure(msg, &mime);
mMainPart = (AbstractPart *) Attachment::attachmentsWithMIME(msg->msg_mime)->retain();
mMainPart->applyUniquePartID();
- header()->importIMFFields(msg->msg_fields);
- mailmessage_free(msg);
+
+ size_t cur_token = 0;
+ struct mailimf_fields * fields;
+ int r = mailimf_envelope_and_optional_fields_parse(data->bytes(), data->length(), &cur_token, &fields);
+ if (r == MAILIMAP_NO_ERROR) {
+ header()->importIMFFields(fields);
+ mailimf_fields_free(fields);
+ }
+ mailmessage_free(msg);
}
MessageParser::MessageParser(MessageParser * other) : AbstractMessage(other)