This commit is contained in:
Brad Arant 2020-08-05 11:57:35 -07:00
parent 591705f897
commit 4f95b4591b
4 changed files with 16 additions and 10 deletions

View File

@ -8,10 +8,11 @@ namespace coreutils {
}
IMFHeader::IMFHeader(PString &in) {
printf("in='%s'\n", in.str().c_str());
key = in.getTokenInclude("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-");
if(key.length() != 0) {
if(!in.ifNext(":")) {
printf("%02X\n", in.str()[0]);
printf("key=%s %02X\n", key.c_str(), in.str()[0]);
throw coreutils::Exception("Invalid character in expected header token.");
}
in.skipWhitespace();

View File

@ -12,15 +12,17 @@ namespace coreutils {
parse(in);
}
void IMFMessage::parse(PString &in) {
coreutils::Log(coreutils::LOG_DEBUG_4) << "parse [" << in.str() << "]";
if(in.size() == 0)
return;
bool IMFMessage::parse(PString &in) {
while(!in.ifNext("\r\n") && !in.eod()) {
coreutils::Log(coreutils::LOG_DEBUG_4) << "parse [" << in.str() << "]";
if(in.str() != "") {
headers.emplace_back(in);
return true;
}
coreutils::Log(coreutils::LOG_DEBUG_2) << "End of header with Content Type = " << getHeader("Content-Type") << " for " << getHeader("Content-Length") << " bytes.";
std::string type = getHeader("Content-Type");
if(type.size() == 0)
@ -32,6 +34,7 @@ namespace coreutils {
body = new IMFPlainText(in);
else
body = new IMFBody();
return false;
}
void IMFMessage::output(std::stringstream &out) {

View File

@ -14,7 +14,7 @@ namespace coreutils {
IMFMessage();
IMFMessage(PString &in);
void parse(PString &in);
bool parse(PString &in);
void output(std::stringstream &out);
IMFRequest *request;

View File

@ -77,9 +77,11 @@ namespace coreutils {
}
int PString::skipWhitespace() {
size_t found = pstring.find_first_not_of(" \t", cursor);
coreutils::Log(coreutils::LOG_DEBUG_2) << "Skipping whitespace for " << found << " spaces.";
return found;
size_t temp = cursor;
cursor = pstring.find_first_not_of(" \t", cursor);
cursor = cursor == -1 ? temp: cursor;
coreutils::Log(coreutils::LOG_DEBUG_2) << "Skipping whitespace for " << (cursor - temp) << " spaces.";
return cursor - temp;
}
int PString::size() {