From 2b1ad81cf587fb46392d751f740a55139795ec56 Mon Sep 17 00:00:00 2001 From: Juliana Fajardini Date: Wed, 17 Jul 2024 17:22:04 -0300 Subject: [PATCH] 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 --- rust/src/pgsql/pgsql.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/rust/src/pgsql/pgsql.rs b/rust/src/pgsql/pgsql.rs index 8a2b0da157b0..658c2326ffd5 100644 --- a/rust/src/pgsql/pgsql.rs +++ b/rust/src/pgsql/pgsql.rs @@ -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, + ); } } }