aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/vmime/address.cpp2
-rw-r--r--src/vmime/address.hpp2
-rw-r--r--src/vmime/addressList.cpp2
-rw-r--r--src/vmime/addressList.hpp2
-rw-r--r--src/vmime/body.cpp2
-rw-r--r--src/vmime/body.hpp2
-rw-r--r--src/vmime/bodyPart.cpp2
-rw-r--r--src/vmime/bodyPart.hpp2
-rw-r--r--src/vmime/charset.cpp2
-rw-r--r--src/vmime/charset.hpp2
-rw-r--r--src/vmime/component.cpp10
-rw-r--r--src/vmime/component.hpp10
-rw-r--r--src/vmime/contentDisposition.cpp2
-rw-r--r--src/vmime/contentDisposition.hpp2
-rw-r--r--src/vmime/dateTime.cpp2
-rw-r--r--src/vmime/dateTime.hpp2
-rw-r--r--src/vmime/disposition.cpp2
-rw-r--r--src/vmime/disposition.hpp2
-rw-r--r--src/vmime/emailAddress.cpp2
-rw-r--r--src/vmime/emailAddress.hpp2
-rw-r--r--src/vmime/encoding.cpp2
-rw-r--r--src/vmime/encoding.hpp2
-rw-r--r--src/vmime/header.cpp2
-rw-r--r--src/vmime/header.hpp2
-rw-r--r--src/vmime/headerField.cpp6
-rw-r--r--src/vmime/headerField.hpp4
-rw-r--r--src/vmime/mailbox.cpp2
-rw-r--r--src/vmime/mailbox.hpp2
-rw-r--r--src/vmime/mailboxField.cpp2
-rw-r--r--src/vmime/mailboxField.hpp2
-rw-r--r--src/vmime/mailboxGroup.cpp2
-rw-r--r--src/vmime/mailboxGroup.hpp2
-rw-r--r--src/vmime/mailboxList.cpp2
-rw-r--r--src/vmime/mailboxList.hpp2
-rw-r--r--src/vmime/mediaType.cpp2
-rw-r--r--src/vmime/mediaType.hpp2
-rw-r--r--src/vmime/messageId.cpp4
-rw-r--r--src/vmime/messageId.hpp4
-rw-r--r--src/vmime/messageIdSequence.cpp2
-rw-r--r--src/vmime/messageIdSequence.hpp2
-rw-r--r--src/vmime/parameter.cpp4
-rw-r--r--src/vmime/parameter.hpp4
-rw-r--r--src/vmime/parameterizedHeaderField.cpp2
-rw-r--r--src/vmime/parameterizedHeaderField.hpp2
-rw-r--r--src/vmime/parsingContext.cpp12
-rw-r--r--src/vmime/parsingContext.hpp23
-rw-r--r--src/vmime/path.cpp2
-rw-r--r--src/vmime/path.hpp2
-rw-r--r--src/vmime/relay.cpp2
-rw-r--r--src/vmime/relay.hpp2
-rw-r--r--src/vmime/text.cpp6
-rw-r--r--src/vmime/text.hpp6
-rw-r--r--src/vmime/word.cpp8
-rw-r--r--src/vmime/word.hpp8
54 files changed, 112 insertions, 77 deletions
diff --git a/src/vmime/address.cpp b/src/vmime/address.cpp
index 5333ae52..5703a389 100644
--- a/src/vmime/address.cpp
+++ b/src/vmime/address.cpp
@@ -66,7 +66,7 @@ address-list = (address *("," address)) / obs-addr-list
*/
shared_ptr <address> address::parseNext(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/address.hpp b/src/vmime/address.hpp
index 347eb500..172eeda3 100644
--- a/src/vmime/address.hpp
+++ b/src/vmime/address.hpp
@@ -73,7 +73,7 @@ public:
* @return a new address object, or null if no more address is available in the input buffer
*/
static shared_ptr <address> parseNext(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/addressList.cpp b/src/vmime/addressList.cpp
index ad6ce915..75f62245 100644
--- a/src/vmime/addressList.cpp
+++ b/src/vmime/addressList.cpp
@@ -50,7 +50,7 @@ addressList::~addressList() {
void addressList::parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/addressList.hpp b/src/vmime/addressList.hpp
index 69cbd74a..906fa420 100644
--- a/src/vmime/addressList.hpp
+++ b/src/vmime/addressList.hpp
@@ -176,7 +176,7 @@ protected:
// Component parsing & assembling
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/body.cpp b/src/vmime/body.cpp
index a3875b9d..1d8ae847 100644
--- a/src/vmime/body.cpp
+++ b/src/vmime/body.cpp
@@ -122,7 +122,7 @@ size_t body::findNextBoundaryPosition(
void body::parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const shared_ptr <utility::parserInputStreamAdapter>& parser,
const size_t position,
const size_t end,
diff --git a/src/vmime/body.hpp b/src/vmime/body.hpp
index 7ece000e..a17d1dbe 100644
--- a/src/vmime/body.hpp
+++ b/src/vmime/body.hpp
@@ -343,7 +343,7 @@ protected:
// Component parsing & assembling
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const shared_ptr <utility::parserInputStreamAdapter>& parser,
const size_t position,
const size_t end,
diff --git a/src/vmime/bodyPart.cpp b/src/vmime/bodyPart.cpp
index ff81994d..5c59fe5c 100644
--- a/src/vmime/bodyPart.cpp
+++ b/src/vmime/bodyPart.cpp
@@ -37,7 +37,7 @@ bodyPart::bodyPart()
void bodyPart::parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const shared_ptr <utility::parserInputStreamAdapter>& parser,
const size_t position,
const size_t end,
diff --git a/src/vmime/bodyPart.hpp b/src/vmime/bodyPart.hpp
index f63b3675..e7e5ade5 100644
--- a/src/vmime/bodyPart.hpp
+++ b/src/vmime/bodyPart.hpp
@@ -133,7 +133,7 @@ protected:
// Component parsing & assembling
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const shared_ptr <utility::parserInputStreamAdapter>& parser,
const size_t position,
const size_t end,
diff --git a/src/vmime/charset.cpp b/src/vmime/charset.cpp
index 24d36307..bb769f2b 100644
--- a/src/vmime/charset.cpp
+++ b/src/vmime/charset.cpp
@@ -64,7 +64,7 @@ charset::charset(const charset& other)
void charset::parseImpl(
- const parsingContext& /* ctx */,
+ parsingContext& /* ctx */,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/charset.hpp b/src/vmime/charset.hpp
index fbe90946..00629e28 100644
--- a/src/vmime/charset.hpp
+++ b/src/vmime/charset.hpp
@@ -155,7 +155,7 @@ protected:
// Component parsing & assembling
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/component.cpp b/src/vmime/component.cpp
index 7adf8f71..99c06548 100644
--- a/src/vmime/component.cpp
+++ b/src/vmime/component.cpp
@@ -65,7 +65,7 @@ void component::parse(
void component::parse(
- const parsingContext& ctx,
+ parsingContext& ctx,
const shared_ptr <utility::inputStream>& inputStream,
const size_t position,
const size_t end,
@@ -106,7 +106,7 @@ void component::parse(const string& buffer) {
}
-void component::parse(const parsingContext& ctx, const string& buffer) {
+void component::parse(parsingContext& ctx, const string& buffer) {
m_parsedOffset = m_parsedLength = 0;
@@ -128,7 +128,7 @@ void component::parse(
void component::parse(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end, size_t* newPosition
@@ -157,7 +157,7 @@ void component::offsetParsedBounds(const size_t offset) {
void component::parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const shared_ptr <utility::parserInputStreamAdapter>& parser,
const size_t position,
const size_t end,
@@ -181,7 +181,7 @@ void component::parseImpl(
void component::parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/component.hpp b/src/vmime/component.hpp
index 91164c30..40f87ff0 100644
--- a/src/vmime/component.hpp
+++ b/src/vmime/component.hpp
@@ -59,7 +59,7 @@ public:
* @param ctx parsing context
* @param buffer input buffer
*/
- void parse(const parsingContext& ctx, const string& buffer);
+ void parse(parsingContext& ctx, const string& buffer);
/** Parse RFC-822/MIME data for this component. If stream is not seekable,
* or if length is not specified, entire contents of the stream will
@@ -94,7 +94,7 @@ public:
* @param newPosition will receive the new position in the input buffer
*/
void parse(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
@@ -129,7 +129,7 @@ public:
* @param newPosition will receive the new position in the input stream
*/
void parse(
- const parsingContext& ctx,
+ parsingContext& ctx,
const shared_ptr <utility::inputStream>& inputStream,
const size_t position,
const size_t end,
@@ -228,7 +228,7 @@ protected:
// AT LEAST ONE of these parseImpl() functions MUST be implemented in derived class
virtual void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const shared_ptr <utility::parserInputStreamAdapter>& parser,
const size_t position,
const size_t end,
@@ -236,7 +236,7 @@ protected:
);
virtual void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/contentDisposition.cpp b/src/vmime/contentDisposition.cpp
index 1602273c..8c78475e 100644
--- a/src/vmime/contentDisposition.cpp
+++ b/src/vmime/contentDisposition.cpp
@@ -47,7 +47,7 @@ contentDisposition::contentDisposition(const contentDisposition& type)
void contentDisposition::parseImpl(
- const parsingContext& /* ctx */,
+ parsingContext& /* ctx */,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/contentDisposition.hpp b/src/vmime/contentDisposition.hpp
index 636c0fb5..d2a80678 100644
--- a/src/vmime/contentDisposition.hpp
+++ b/src/vmime/contentDisposition.hpp
@@ -77,7 +77,7 @@ protected:
// Component parsing & assembling
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/dateTime.cpp b/src/vmime/dateTime.cpp
index 84a5ba3f..9dde881b 100644
--- a/src/vmime/dateTime.cpp
+++ b/src/vmime/dateTime.cpp
@@ -76,7 +76,7 @@ static const char* monthNames[] = {
};
void datetime::parseImpl(
- const parsingContext& /* ctx */,
+ parsingContext& /* ctx */,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/dateTime.hpp b/src/vmime/dateTime.hpp
index 64e8dad4..2a69cc2e 100644
--- a/src/vmime/dateTime.hpp
+++ b/src/vmime/dateTime.hpp
@@ -253,7 +253,7 @@ protected:
// Component parsing & assembling
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/disposition.cpp b/src/vmime/disposition.cpp
index 4c808013..c8fa617a 100644
--- a/src/vmime/disposition.cpp
+++ b/src/vmime/disposition.cpp
@@ -187,7 +187,7 @@ const std::vector <string> disposition::getModifierList() const {
void disposition::parseImpl(
- const parsingContext& /* ctx */,
+ parsingContext& /* ctx */,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/disposition.hpp b/src/vmime/disposition.hpp
index 37a98eef..c8e419ba 100644
--- a/src/vmime/disposition.hpp
+++ b/src/vmime/disposition.hpp
@@ -142,7 +142,7 @@ protected:
// Component parsing & assembling
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/emailAddress.cpp b/src/vmime/emailAddress.cpp
index 00ae418f..55975b11 100644
--- a/src/vmime/emailAddress.cpp
+++ b/src/vmime/emailAddress.cpp
@@ -176,7 +176,7 @@ emailAddress::emailAddress(const word& localName, const word& domainName)
void emailAddress::parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/emailAddress.hpp b/src/vmime/emailAddress.hpp
index 78249967..f7cca383 100644
--- a/src/vmime/emailAddress.hpp
+++ b/src/vmime/emailAddress.hpp
@@ -113,7 +113,7 @@ public:
// Component parsing & assembling
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/encoding.cpp b/src/vmime/encoding.cpp
index 23814a67..132c010f 100644
--- a/src/vmime/encoding.cpp
+++ b/src/vmime/encoding.cpp
@@ -62,7 +62,7 @@ encoding::encoding(const encoding& enc)
void encoding::parseImpl(
- const parsingContext& /* ctx */,
+ parsingContext& /* ctx */,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/encoding.hpp b/src/vmime/encoding.hpp
index 2ff17ef6..42e07f92 100644
--- a/src/vmime/encoding.hpp
+++ b/src/vmime/encoding.hpp
@@ -158,7 +158,7 @@ protected:
// Component parsing & assembling
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/header.cpp b/src/vmime/header.cpp
index c7d7ca08..b2367dfa 100644
--- a/src/vmime/header.cpp
+++ b/src/vmime/header.cpp
@@ -62,7 +62,7 @@ field-body-contents =
*/
void header::parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/header.hpp b/src/vmime/header.hpp
index 7b4a1616..2d4fa772 100644
--- a/src/vmime/header.hpp
+++ b/src/vmime/header.hpp
@@ -340,7 +340,7 @@ protected:
// Component parsing & assembling
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/headerField.cpp b/src/vmime/headerField.cpp
index bff365dc..077d3a2a 100644
--- a/src/vmime/headerField.cpp
+++ b/src/vmime/headerField.cpp
@@ -75,7 +75,7 @@ headerField& headerField::operator=(const headerField& other) {
shared_ptr <headerField> headerField::parseNext(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
@@ -125,6 +125,8 @@ shared_ptr <headerField> headerField::parseNext(
if (buffer[pos] != ':') {
+ // header field recovery is necessary, update flag in parsing context
+ ctx.setHeaderRecoveryNeeded(true);
switch (ctx.getHeaderParseErrorRecoveryMethod()) {
case vmime::headerParseRecoveryMethod::SKIP_LINE:
@@ -261,7 +263,7 @@ shared_ptr <headerField> headerField::parseNext(
void headerField::parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/headerField.hpp b/src/vmime/headerField.hpp
index 66e99460..dba5719b 100644
--- a/src/vmime/headerField.hpp
+++ b/src/vmime/headerField.hpp
@@ -153,7 +153,7 @@ public:
* in the input buffer
*/
static shared_ptr <headerField> parseNext(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
@@ -165,7 +165,7 @@ public:
protected:
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/mailbox.cpp b/src/vmime/mailbox.cpp
index 30a082ea..23f46d9a 100644
--- a/src/vmime/mailbox.cpp
+++ b/src/vmime/mailbox.cpp
@@ -69,7 +69,7 @@ angle-addr = [CFWS] "<" addr-spec ">" [CFWS] / obs-angle-addr
*/
void mailbox::parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/mailbox.hpp b/src/vmime/mailbox.hpp
index c563129d..b204f097 100644
--- a/src/vmime/mailbox.hpp
+++ b/src/vmime/mailbox.hpp
@@ -101,7 +101,7 @@ public:
// Component parsing & assembling
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/mailboxField.cpp b/src/vmime/mailboxField.cpp
index 84c8f3d5..27752ec2 100644
--- a/src/vmime/mailboxField.cpp
+++ b/src/vmime/mailboxField.cpp
@@ -43,7 +43,7 @@ mailboxField::mailboxField(const mailboxField&)
void mailboxField::parse(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/mailboxField.hpp b/src/vmime/mailboxField.hpp
index 6c653616..f190686d 100644
--- a/src/vmime/mailboxField.hpp
+++ b/src/vmime/mailboxField.hpp
@@ -51,7 +51,7 @@ protected:
public:
void parse(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/mailboxGroup.cpp b/src/vmime/mailboxGroup.cpp
index 3baa3329..ff9c74ff 100644
--- a/src/vmime/mailboxGroup.cpp
+++ b/src/vmime/mailboxGroup.cpp
@@ -54,7 +54,7 @@ mailboxGroup::~mailboxGroup() {
void mailboxGroup::parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/mailboxGroup.hpp b/src/vmime/mailboxGroup.hpp
index 4a7da3e3..494f22a3 100644
--- a/src/vmime/mailboxGroup.hpp
+++ b/src/vmime/mailboxGroup.hpp
@@ -184,7 +184,7 @@ protected:
// Component parsing & assembling
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/mailboxList.cpp b/src/vmime/mailboxList.cpp
index 84c06d83..984d1e09 100644
--- a/src/vmime/mailboxList.cpp
+++ b/src/vmime/mailboxList.cpp
@@ -191,7 +191,7 @@ const std::vector <shared_ptr <component> > mailboxList::getChildComponents() {
void mailboxList::parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/mailboxList.hpp b/src/vmime/mailboxList.hpp
index 8d799d2c..d81a9fe1 100644
--- a/src/vmime/mailboxList.hpp
+++ b/src/vmime/mailboxList.hpp
@@ -162,7 +162,7 @@ protected:
// Component parsing & assembling
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/mediaType.cpp b/src/vmime/mediaType.cpp
index 7f68ab36..46163bca 100644
--- a/src/vmime/mediaType.cpp
+++ b/src/vmime/mediaType.cpp
@@ -56,7 +56,7 @@ mediaType::mediaType(const mediaType& other)
void mediaType::parseImpl(
- const parsingContext& /* ctx */,
+ parsingContext& /* ctx */,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/mediaType.hpp b/src/vmime/mediaType.hpp
index b18ed0fc..80028afc 100644
--- a/src/vmime/mediaType.hpp
+++ b/src/vmime/mediaType.hpp
@@ -98,7 +98,7 @@ protected:
// Component parsing & assembling
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/messageId.cpp b/src/vmime/messageId.cpp
index c8ea6426..35712f30 100644
--- a/src/vmime/messageId.cpp
+++ b/src/vmime/messageId.cpp
@@ -64,7 +64,7 @@ messageId::messageId(const string& left, const string& right)
*/
void messageId::parseImpl(
- const parsingContext& /* ctx */,
+ parsingContext& /* ctx */,
const string& buffer,
const size_t position,
const size_t end,
@@ -158,7 +158,7 @@ void messageId::parseImpl(
shared_ptr <messageId> messageId::parseNext(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/messageId.hpp b/src/vmime/messageId.hpp
index 8edbe3e3..4d19b361 100644
--- a/src/vmime/messageId.hpp
+++ b/src/vmime/messageId.hpp
@@ -106,7 +106,7 @@ protected:
// Component parsing & assembling
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
@@ -129,7 +129,7 @@ protected:
* @return a new message-id object, or null if no more message-id can be parsed from the input buffer
*/
static shared_ptr <messageId> parseNext(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/messageIdSequence.cpp b/src/vmime/messageIdSequence.cpp
index 2b68bcc7..e1d324a1 100644
--- a/src/vmime/messageIdSequence.cpp
+++ b/src/vmime/messageIdSequence.cpp
@@ -84,7 +84,7 @@ const std::vector <shared_ptr <component> > messageIdSequence::getChildComponent
void messageIdSequence::parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/messageIdSequence.hpp b/src/vmime/messageIdSequence.hpp
index e5d0eb64..a675f9c8 100644
--- a/src/vmime/messageIdSequence.hpp
+++ b/src/vmime/messageIdSequence.hpp
@@ -153,7 +153,7 @@ protected:
// Component parsing & assembling
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/parameter.cpp b/src/vmime/parameter.cpp
index 41b37a46..5cb5b759 100644
--- a/src/vmime/parameter.cpp
+++ b/src/vmime/parameter.cpp
@@ -116,7 +116,7 @@ void parameter::setValue(const word& value) {
void parameter::parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
@@ -138,7 +138,7 @@ void parameter::parseImpl(
void parameter::parse(
- const parsingContext& ctx,
+ parsingContext& ctx,
const std::vector <valueChunk>& chunks
) {
diff --git a/src/vmime/parameter.hpp b/src/vmime/parameter.hpp
index f965bade..cd4ac49f 100644
--- a/src/vmime/parameter.hpp
+++ b/src/vmime/parameter.hpp
@@ -143,7 +143,7 @@ public:
protected:
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
@@ -160,7 +160,7 @@ protected:
private:
void parse(
- const parsingContext& ctx,
+ parsingContext& ctx,
const std::vector <valueChunk>& chunks
);
diff --git a/src/vmime/parameterizedHeaderField.cpp b/src/vmime/parameterizedHeaderField.cpp
index 6815fad1..af984951 100644
--- a/src/vmime/parameterizedHeaderField.cpp
+++ b/src/vmime/parameterizedHeaderField.cpp
@@ -78,7 +78,7 @@ struct paramInfo {
void parameterizedHeaderField::parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/parameterizedHeaderField.hpp b/src/vmime/parameterizedHeaderField.hpp
index d884f1fb..689aae2b 100644
--- a/src/vmime/parameterizedHeaderField.hpp
+++ b/src/vmime/parameterizedHeaderField.hpp
@@ -200,7 +200,7 @@ private:
protected:
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/parsingContext.cpp b/src/vmime/parsingContext.cpp
index ae14715f..e80eab78 100644
--- a/src/vmime/parsingContext.cpp
+++ b/src/vmime/parsingContext.cpp
@@ -61,6 +61,18 @@ void parsingContext::setHeaderParseErrorRecoveryMethod(
}
+bool parsingContext::getHeaderRecoveryNeeded() const {
+
+ return m_headerParseRecoveryNeeded;
+}
+
+
+void parsingContext::setHeaderRecoveryNeeded(bool needed) {
+
+ m_headerParseRecoveryNeeded = needed;
+}
+
+
bool parsingContext::getUseMyHostname() const {
return m_useMyHostname;
diff --git a/src/vmime/parsingContext.hpp b/src/vmime/parsingContext.hpp
index f8feabfb..95c51959 100644
--- a/src/vmime/parsingContext.hpp
+++ b/src/vmime/parsingContext.hpp
@@ -51,6 +51,8 @@ struct headerParseRecoveryMethod {
*/
class VMIME_EXPORT parsingContext : public context {
+ friend class headerField;
+
public:
parsingContext();
@@ -77,7 +79,15 @@ public:
*/
headerParseRecoveryMethod::headerLineError getHeaderParseErrorRecoveryMethod() const;
- /** Return the current hostname adding behavior when parsing/creating a header field that
+ /** Returns a boolean indicating if utilizing the header recovery mechanism
+ * was necessary.
+ *
+ * @retval true The header recovery mechanism was necessary when parsing
+ * @retval false The header recovery mechanism was not necessary when parsing
+ */
+ bool getHeaderRecoveryNeeded() const;
+
+ /** Return the current hostname adding behavior when parsing/creating a header field that
* utilizes a domain name.
*
* @retval true The local hostname will be appended if a domain is not present
@@ -95,6 +105,17 @@ protected:
headerParseRecoveryMethod::headerLineError m_headerParseErrorRecovery;
+ /** Flag to indicate if the header recovery mechanism was used while parsing
+ * as only one method is ever in use, a simple boolean is sufficent
+ */
+ bool m_headerParseRecoveryNeeded{false};
+
+ /** Sets a flag indicating that the header recovery mechanism was required
+ *
+ * This should only be called from headerField::parseNext
+ */
+ void setHeaderRecoveryNeeded(bool needed);
+
/** Flag to indicate if the local hostname should be used/appended
* for header fields when one is not present.
*/
diff --git a/src/vmime/path.cpp b/src/vmime/path.cpp
index 9b94875a..a3aaff21 100644
--- a/src/vmime/path.cpp
+++ b/src/vmime/path.cpp
@@ -115,7 +115,7 @@ const std::vector <shared_ptr <component> > path::getChildComponents() {
void path::parseImpl(
- const parsingContext& /* ctx */,
+ parsingContext& /* ctx */,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/path.hpp b/src/vmime/path.hpp
index d63ee674..62aa0810 100644
--- a/src/vmime/path.hpp
+++ b/src/vmime/path.hpp
@@ -84,7 +84,7 @@ protected:
// Component parsing & assembling
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/relay.cpp b/src/vmime/relay.cpp
index b0a6b60f..f989615d 100644
--- a/src/vmime/relay.cpp
+++ b/src/vmime/relay.cpp
@@ -58,7 +58,7 @@ relay::relay(const relay& r)
*/
void relay::parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/relay.hpp b/src/vmime/relay.hpp
index f4676026..3bdeecb4 100644
--- a/src/vmime/relay.hpp
+++ b/src/vmime/relay.hpp
@@ -86,7 +86,7 @@ private:
protected:
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/text.cpp b/src/vmime/text.cpp
index 123ce007..a6172633 100644
--- a/src/vmime/text.cpp
+++ b/src/vmime/text.cpp
@@ -67,7 +67,7 @@ text::~text() {
void text::parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
@@ -401,7 +401,7 @@ shared_ptr <text> text::decodeAndUnfold(const string& in) {
}
-shared_ptr <text> text::decodeAndUnfold(const parsingContext& ctx, const string& in) {
+shared_ptr <text> text::decodeAndUnfold(parsingContext& ctx, const string& in) {
shared_ptr <text> t = make_shared <text>();
@@ -417,7 +417,7 @@ text* text::decodeAndUnfold(const string& in, text* generateInExisting) {
}
-text* text::decodeAndUnfold(const parsingContext& ctx, const string& in, text* generateInExisting) {
+text* text::decodeAndUnfold(parsingContext& ctx, const string& in, text* generateInExisting) {
text* out = generateInExisting ? generateInExisting : new text();
diff --git a/src/vmime/text.hpp b/src/vmime/text.hpp
index 143f5270..3b439e38 100644
--- a/src/vmime/text.hpp
+++ b/src/vmime/text.hpp
@@ -229,7 +229,7 @@ public:
* @param in input string
* @return new text object
*/
- static shared_ptr <text> decodeAndUnfold(const parsingContext& ctx, const string& in);
+ static shared_ptr <text> decodeAndUnfold(parsingContext& ctx, const string& in);
/** Decode and unfold text (RFC-2047), using the default parsing context.
*
@@ -253,7 +253,7 @@ public:
* @return new text object or existing object if generateInExisting != NULL
*/
static text* decodeAndUnfold(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& in,
text* generateInExisting
);
@@ -265,7 +265,7 @@ protected:
// Component parsing & assembling
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/word.cpp b/src/vmime/word.cpp
index 2607e90d..d4bf85cf 100644
--- a/src/vmime/word.cpp
+++ b/src/vmime/word.cpp
@@ -78,7 +78,7 @@ word::word(const string& buffer, const charset& charset, const string& lang)
shared_ptr <word> word::parseNext(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
@@ -255,7 +255,7 @@ shared_ptr <word> word::parseNext(
const std::vector <shared_ptr <word> > word::parseMultiple(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
@@ -282,7 +282,7 @@ const std::vector <shared_ptr <word> > word::parseMultiple(
void word::parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
@@ -294,7 +294,7 @@ void word::parseImpl(
void word::parseWithState(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
diff --git a/src/vmime/word.hpp b/src/vmime/word.hpp
index 1565a0be..c90d908e 100644
--- a/src/vmime/word.hpp
+++ b/src/vmime/word.hpp
@@ -198,7 +198,7 @@ public:
protected:
void parseImpl(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
@@ -213,7 +213,7 @@ protected:
) const;
void parseWithState(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
@@ -241,7 +241,7 @@ public:
private:
static shared_ptr <word> parseNext(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,
@@ -250,7 +250,7 @@ private:
);
static const std::vector <shared_ptr <word> > parseMultiple(
- const parsingContext& ctx,
+ parsingContext& ctx,
const string& buffer,
const size_t position,
const size_t end,