110 auto [headerFieldName, value] =
httputils::str_split(line,
':');
112 if (headerFieldName.empty()) {
115 }
else if ((std::isblank(headerFieldName.back()) != 0) || (std::isblank(headerFieldName.front()) != 0)) {
118 }
else if (value.empty()) {
120 errorReason =
"Value of field \"" + headerFieldName +
"\" empty";
122 if (fieldsExpected.empty() || fieldsExpected.contains(headerFieldName)) {
123 httputils::str_trimm(value);
125 if (!fields.contains(headerFieldName)) {
126 fields.emplace(headerFieldName, value);
128 fields[headerFieldName] +=
"," + value;
130 }
else if (!fieldsExpected.empty() && !fieldsExpected.contains(headerFieldName)) {
132 errorReason =
"Field '" + headerFieldName +
"' not in expected fields";
std::size_t readFromPeer(char *chunk, std::size_t chunklen) const final