if (frame_buf.data != nullptr)
{
- session_data->frame_data[source_id] = const_cast <uint8_t*>(frame_buf.data);
+ session_data->frame_data[source_id] = frame_buf.data;
session_data->frame_data_size[source_id] = frame_buf.length;
bytes_sent_http = 0;
reassemble_bytes_sent = 0;
// Reassemble() data to eval()
uint8_t lead_frame_header[2][Http2Enums::FRAME_HEADER_LENGTH];
- uint8_t* frame_data[2] = { nullptr, nullptr };
+ const uint8_t* frame_data[2] = { nullptr, nullptr };
uint32_t frame_data_size[2] = { 0, 0 };
// Used in eval()
bool read_frame_header[2] = { false, false };
bool continuation_frame[2] = { false, false };
bool read_padding_len[2] = { false, false };
+ uint8_t* frame_reassemble[2] = { nullptr, nullptr };
#ifdef REG_TEST
static uint64_t instance_count;
session_data->frame_data_size[source_id] =
total - (session_data->frame_lengths[source_id].size() * FRAME_HEADER_LENGTH);
if (session_data->frame_data_size[source_id] > 0)
- session_data->frame_data[source_id] = new uint8_t[
+ session_data->frame_reassemble[source_id] = new uint8_t[
session_data->frame_data_size[source_id]];
session_data->frame_data_offset[source_id] = 0;
remaining_frame_payload : len - data_offset;
if (octets_to_copy > 0)
{
- memcpy(session_data->frame_data[source_id] +
+ memcpy(session_data->frame_reassemble[source_id] +
session_data->frame_data_offset[source_id],
data + data_offset, octets_to_copy);
}
session_data->total_bytes_in_split[source_id] = 0;
session_data->scan_octets_seen[source_id] = 0;
+ if (session_data->frame_type[source_id] != FT_DATA)
+ {
+ session_data->frame_data[source_id] = session_data->frame_reassemble[source_id];
+ session_data->frame_reassemble[source_id] = nullptr;
+ }
+
// Return 0-length non-null buffer to stream which signals detection required, but don't
// create pkt_data buffer
frame_buf.data = (const uint8_t*)"";