snort::StreamSplitter::Status scan(const uint8_t* data, uint32_t length,
uint32_t* flush_offset, uint32_t& data_offset, uint8_t frame_flags);
void reassemble(const uint8_t* data, unsigned len);
+ void discard_cleanup();
private:
Http2FlowData* const session_data;
session_data->scan_frame_header[source_id], FRAME_HEADER_LENGTH);
}
else
- {
- if (!session_data->continuation_expected[source_id])
+ {
+ if (!session_data->continuation_expected[source_id])
{
*session_data->infractions[source_id] += INF_UNEXPECTED_CONTINUATION;
session_data->events[source_id]->create_event(EVENT_UNEXPECTED_CONTINUATION);
return StreamSplitter::ABORT;
- }
- // Do flags check for continuation frame, since it is not saved
+ }
+ // Do flags check for continuation frame, since it is not saved
// as lead frame for later.
if ((frame_flags & FLAG_END_HEADERS) != frame_flags)
{
return frame_buf;
}
-void Http2StreamSplitter::discarded_data_frame_cleanup(Http2FlowData* session_data, HttpCommon::SourceId source_id, Http2Stream* stream)
+void Http2StreamSplitter::discarded_data_frame_cleanup(Http2FlowData* session_data,
+ HttpCommon::SourceId source_id, Http2Stream* stream)
{
+ session_data->data_cutter[source_id].discard_cleanup();
+
if (stream->get_state(source_id) == STREAM_ERROR ||
!stream->is_end_stream_on_data_flush(source_id))
return;