pgsql: trigger raw stream reassembly at tx completion

Once we are tracking tx progress per-direction for PGSQL, we can trigger
the raw stream reassembly, for detection purposes, as soon as the
transactions are completed in the given direction.

Task #7000
pull/11804/head
Juliana Fajardini 3 months ago committed by Victor Julien
parent dcccbb1196
commit 2b1ad81cf5

@ -344,10 +344,6 @@ impl PgsqlState {
);
match PgsqlState::state_based_req_parsing(self.state_progress, start) {
Ok((rem, request)) => {
sc_app_layer_parser_trigger_raw_stream_reassembly(
flow,
Direction::ToServer as i32,
);
start = rem;
let new_state = PgsqlState::request_next_state(&request);
@ -375,6 +371,10 @@ impl PgsqlState {
/* The server won't send any responses to such requests, so transaction should be over */
tx.tx_res_state = PgsqlTxProgress::TxDone;
}
sc_app_layer_parser_trigger_raw_stream_reassembly(
flow,
Direction::ToServer as i32,
);
}
}
} else {
@ -511,10 +511,6 @@ impl PgsqlState {
while !start.is_empty() {
match PgsqlState::state_based_resp_parsing(self.state_progress, start) {
Ok((rem, response)) => {
sc_app_layer_parser_trigger_raw_stream_reassembly(
flow,
Direction::ToClient as i32,
);
start = rem;
SCLogDebug!("Response is {:?}", &response);
let new_state = self.response_process_next_state(&response, flow);
@ -546,6 +542,10 @@ impl PgsqlState {
if Self::response_is_complete(state) {
tx.tx_req_state = PgsqlTxProgress::TxDone;
tx.tx_res_state = PgsqlTxProgress::TxDone;
sc_app_layer_parser_trigger_raw_stream_reassembly(
flow,
Direction::ToClient as i32,
);
}
}
}

Loading…
Cancel
Save