# HG changeset patch # User František Kučera # Date 1612639946 -3600 # Node ID a3794fe5ea4b4dddfb994efc7b3c41403064f382 # Parent dd8ff58fb29b067fb451f4d22418f283646c39f5 normalize header names to lower case diff -r dd8ff58fb29b -r a3794fe5ea4b src/XMLDocumentConstructor.h --- a/src/XMLDocumentConstructor.h Sat Feb 06 20:24:55 2021 +0100 +++ b/src/XMLDocumentConstructor.h Sat Feb 06 20:32:26 2021 +0100 @@ -55,6 +55,12 @@ return contentType.getType() + "/" + contentType.getSubType(); } + std::string toLowerCase(const std::string& value) { + std::string result = value; + std::transform(result.begin(), result.end(), result.begin(), ::tolower); + return result; + } + std::string fetchBody(std::shared_ptr body) { std::stringstream result; vmime::utility::outputStreamAdapter resultAdapter(result); @@ -121,9 +127,7 @@ for (std::shared_ptr mimeField : m.getHeader()->getFieldList()) { // TODO: Are names always ASCII and subset of UTF-8? - // TODO: Convert header names to lower case? (they should be case insensitive) - xmlpp::Element* field = headers->add_child(nameCodec.encode(mimeField->getName())); - + xmlpp::Element* field = headers->add_child(toLowerCase(nameCodec.encode(mimeField->getName()))); if (auto value = mimeField->getValue()) { field->add_child_text(value->getConvertedText(ch));