Loading ccsrc/Protocols/Http/http_codec.cc +16 −13 Original line number Diff line number Diff line Loading @@ -530,7 +530,7 @@ int http_codec::decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBod if (_dc.chunked) { counter = 0; int prev = 0; OCTETSTRING os; OCTETSTRING os(0, nullptr); do { while (counter < body.lengthof()) { // Extract the size of the chunk <chunk size>\r[\n] if ((body[counter].get_octet() == '\r') || (body[counter].get_octet() == '\n')) { Loading @@ -543,17 +543,19 @@ int http_codec::decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBod int idx = counter - prev; OCTETSTRING trunk(idx, static_cast<const unsigned char*>(body)); loggers::get_instance().log_msg("http_codec::decode_body: trunk: ", trunk); std::string str((const char*)static_cast<const unsigned char*>(trunk), counter); std::string str((const char*)static_cast<const unsigned char*>(trunk), idx); loggers::get_instance().log("http_codec::decode_body: str: '%s'", str.c_str()); int len = std::stoi(str);//converter::get_instance().string_to_int(str); int len = std::stoi(str, nullptr, 16);//converter::get_instance().string_to_int(str); loggers::get_instance().log("http_codec::decode_body: Chunk len: %d", len); while (counter < body.lengthof() && ((body[counter].get_octet() == '\r') || (body[counter].get_octet() == '\n'))) { // Skip additional \n counter += 1; } // End of 'while' statement if (counter < body.lengthof()) { loggers::get_instance().log("http_codec::decode_body: Chunked (1): prev = %d, counter=%d / %d", prev, counter, body.lengthof()); os += OCTETSTRING(len, counter + static_cast<const unsigned char*>(body)); loggers::get_instance().log_msg("http_codec::decode_body: os=", os); counter += len; loggers::get_instance().log("http_codec::decode_body: Chunked: %02x %02x %02x", body[counter].get_octet(), body[counter + 1].get_octet(), body[counter + 2].get_octet()); loggers::get_instance().log("http_codec::decode_body: Chunked (2): prev = %d, counter=%d / %d", prev, counter, body.lengthof()); while (counter < body.lengthof() && ((body[counter].get_octet() == '\r') || (body[counter].get_octet() == '\n'))) { // Skip additional \n counter += 1; Loading @@ -561,6 +563,7 @@ int http_codec::decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBod prev = counter; loggers::get_instance().log("http_codec::decode_body: Chunked (3): prev = %d, counter=%d / %d", prev, counter, body.lengthof()); } } } while (counter < body.lengthof()); // Process next chunk if any body = os; } Loading Loading
ccsrc/Protocols/Http/http_codec.cc +16 −13 Original line number Diff line number Diff line Loading @@ -530,7 +530,7 @@ int http_codec::decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBod if (_dc.chunked) { counter = 0; int prev = 0; OCTETSTRING os; OCTETSTRING os(0, nullptr); do { while (counter < body.lengthof()) { // Extract the size of the chunk <chunk size>\r[\n] if ((body[counter].get_octet() == '\r') || (body[counter].get_octet() == '\n')) { Loading @@ -543,17 +543,19 @@ int http_codec::decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBod int idx = counter - prev; OCTETSTRING trunk(idx, static_cast<const unsigned char*>(body)); loggers::get_instance().log_msg("http_codec::decode_body: trunk: ", trunk); std::string str((const char*)static_cast<const unsigned char*>(trunk), counter); std::string str((const char*)static_cast<const unsigned char*>(trunk), idx); loggers::get_instance().log("http_codec::decode_body: str: '%s'", str.c_str()); int len = std::stoi(str);//converter::get_instance().string_to_int(str); int len = std::stoi(str, nullptr, 16);//converter::get_instance().string_to_int(str); loggers::get_instance().log("http_codec::decode_body: Chunk len: %d", len); while (counter < body.lengthof() && ((body[counter].get_octet() == '\r') || (body[counter].get_octet() == '\n'))) { // Skip additional \n counter += 1; } // End of 'while' statement if (counter < body.lengthof()) { loggers::get_instance().log("http_codec::decode_body: Chunked (1): prev = %d, counter=%d / %d", prev, counter, body.lengthof()); os += OCTETSTRING(len, counter + static_cast<const unsigned char*>(body)); loggers::get_instance().log_msg("http_codec::decode_body: os=", os); counter += len; loggers::get_instance().log("http_codec::decode_body: Chunked: %02x %02x %02x", body[counter].get_octet(), body[counter + 1].get_octet(), body[counter + 2].get_octet()); loggers::get_instance().log("http_codec::decode_body: Chunked (2): prev = %d, counter=%d / %d", prev, counter, body.lengthof()); while (counter < body.lengthof() && ((body[counter].get_octet() == '\r') || (body[counter].get_octet() == '\n'))) { // Skip additional \n counter += 1; Loading @@ -561,6 +563,7 @@ int http_codec::decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBod prev = counter; loggers::get_instance().log("http_codec::decode_body: Chunked (3): prev = %d, counter=%d / %d", prev, counter, body.lengthof()); } } } while (counter < body.lengthof()); // Process next chunk if any body = os; } Loading