Skip to content

Commit

Permalink
pgsql: trigger raw stream reassembly at tx completion
Browse files Browse the repository at this point in the history
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
  • Loading branch information
jufajardini authored and victorjulien committed Sep 20, 2024
1 parent dcccbb1 commit 2b1ad81
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions rust/src/pgsql/pgsql.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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,
);
}
}
}
Expand Down

0 comments on commit 2b1ad81

Please sign in to comment.