131 Commits (cc2863ed5aee9b6eb67411f50e8b92231e60ff74)

Author SHA1 Message Date
  Roker cc2863ed5a RFC 2231 unwrapping is necessary for all headers... 3 years ago
  Roker 05947792c4 split bodyparser.cc into separate translation unit: mime_headers.{hh,cc} 3 years ago
  Roker 680e8a1ab4 simplify bodyparser PART 1 3 years ago
  Roker 49ad7345ca be more robust: illegal QP-sequences will no longer throw exceptions. *sigh* 3 years ago
  Roker dac68a1e81 be more robust when MIME-Version is set, but Content-Type is b0rken etc. 3 years ago
  Roker 1be7f37f8c be more robust to convert BS into valid NFC UTF-8. 3 years ago
  Roker 02844e2d37 handle header lines with name but no value after the ':' 3 years ago
  Roker f0bb7db6c0 fix a bug in cyclic dependent rules. 3 years ago
  Roker f4cca84a08 be more robust: convert all header-keys to lowercase. don't throw on invalid header lines but skip them instead. 3 years ago
  Roker 9faed09379 -fsanitize=address found a bug in my flat_map. *blush* 3 years ago
  Roker f4ea957bee add fuzzer test program to fuzz libpEpMIME and libetpan 3 years ago
  Roker d46cf53691 add #include "pEpMIME_internal.hh" to get definition of LOG (== std::cerr or nulllogger) 3 years ago
  Roker 30f8a4cae0 add Nulllogger and use it to avoid logging to stderr in productive builds. 3 years ago
  Roker bbf4af18de handle Non-MIME mail bodies properly: if valid UTF-8 rturn NFC-normalized string. if not, return it as 7-bit ASCII string 3 years ago
  Roker 40471a4d5a add isUtf8(const char* begin, const char* end). 3 years ago
  Roker 80ed56adc7 only convert RFC2231 "extended values" if the parameter name ends with a "*" 3 years ago
  Roker 3c1890893d Oops: Non-MIME mails shall be put in msg->longmsg, not msg->shortmsg (which holds the "Subject" of the e-mail) 3 years ago
  Roker 0611742d40 add parsing of RFC2231-encoded parameter values… *sigh* 3 years ago
  Roker 076418ad22 start to implement MIME body parsers and implement RFC 2231... 3 years ago
  Roker f825639553 use string_view instead of string in to_utf8() to avoid copying. 3 years ago
  Roker f06b9ccf5c only put NFC-compliant strings into address and text header fields to the Engine, as desired. TODO: use view/range-based approach to avoid copying. :-| 3 years ago
  Roker aad8fb5c77 oops.. msg->opt_fields are not filled, because stringpair_list_add() is strange. Fixed. "Received" headers are discarded explicitly, so they DON'T GO into msg->opt_fields, as desired for privacy reasons. 3 years ago
  Roker 62a5079244 add support vor other charsets via iconv(), add tests for conversion of ISO-8859-15 strings. 3 years ago
  Roker 886bf4b5eb clarify usage of lcase_hash() and ""_lcase. 3 years ago
  Roker 088b9d817c Yay, it parses sequences of "encoded_word"s corectly. \o/ 3 years ago
  Roker de92f2649c add samples/ to .hgignore 3 years ago
  Roker e3511b829e make qp_header_encoding more robust. add unittest_subject and found a strange bug. :-( 3 years ago
  Roker 3b3e2441ff implement qp::encode() and qp::encode_header() 3 years ago
  Roker 0048e64d6d add ""_lcase to hash lowercase-only strings more efficiently. 3 years ago
  Roker 15b942e9be add ascii_tolower() 3 years ago
  Roker 25dc154b27 make QP encoding also a template. Use it in bodyparser.cc 3 years ago
  Roker 727c4eb524 forgot to rename functions in .cc file, too 3 years ago
  Roker 17dde83974 move quoted-printable functions in namespace pEpMIME::qp, and have to rename "quoted pair" parser rul from qp to qpair. 3 years ago
  Roker 665964a92e move the base64_decoder for BodyLines into bodyparser.cc where it belongs to. 3 years ago
  Roker 124b3f8df8 split template code into .hxx and non-template code into .cc file 3 years ago
  Roker d8d4143d20 move base64 functions & data structures in their own namespace, so I can split it into .hxx files 3 years ago
  Roker 9dce7acd98 okay, we can iterate over deque<string_view> char-by-char and base64-decode them. But this way it is uuuuuuugly! Need for refactorization! 3 years ago
  Roker 5f037ceec0 boost::fusion is an ugly hack. *sigh* I mentioned it in the comment, though.... 3 years ago
  Roker e9d0e2027d rename HeaderField into more generic "NameValue" to use it also in MimeType parameter list etc. 3 years ago
  Roker ee9214802c adopt parser rule to skip spaces in ContentType parameters 3 years ago
  Roker 7da6f26946 start to parse Content-Type header 3 years ago
  Roker 384cfa36ce remove writing to std::cerr during parsing 3 years ago
  Roker 3c851e6312 remove writing to std::cerr during parsing 3 years ago
  Roker 6ce3b568ac add header_value() helper function to get values from HeaderSection deque. 3 years ago
  Roker be4376cf99 move definition of "sv" into pEpMIME_internal.hh and start to include the body parser 3 years ago
  Roker 6c1f247449 add stub for parse_body(...) 3 years ago
  Roker c49638a23c deque -> vector. and compiler is happy again. :-) 3 years ago
  Roker e2a3f86213 stringlist (better: message-id list) parsing now works, too. *sigh* 4 years ago
  Roker 36cbc71c2f Yeah. .alias() is the key to break the circular dependency in the boost::spirit::qi::rule<>'s! 4 years ago
  Roker 24ba9ec53d vchar is bullshit in quoted_string, because space and Non-ASCII is fine between the quotes! 4 years ago