From: Victor Julien Date: Sun, 17 May 2020 12:24:07 +0000 (+0200) Subject: smb: check post-gap timeouts once a second at most X-Git-Tag: suricata-6.0.0-beta1~278 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=25f2efe97749611760e6e26d388b420091423732;p=thirdparty%2Fsuricata.git smb: check post-gap timeouts once a second at most --- diff --git a/rust/src/smb/smb.rs b/rust/src/smb/smb.rs index c0c09adde5..1bff8b2691 100644 --- a/rust/src/smb/smb.rs +++ b/rust/src/smb/smb.rs @@ -783,6 +783,7 @@ pub struct SMBState<> { /// true as long as we have file txs that are in a post-gap /// state. It means we'll do extra house keeping for those. check_post_gap_file_txs: bool, + post_gap_files_checked: bool, /// transactions list pub transactions: Vec, @@ -827,6 +828,7 @@ impl SMBState { ts_trunc: false, tc_trunc: false, check_post_gap_file_txs: false, + post_gap_files_checked: false, transactions: Vec::new(), tx_id:0, dialect:0, @@ -927,6 +929,7 @@ impl SMBState { fn update_ts(&mut self, ts: u64) { if ts != self.ts { self.ts = ts; + self.post_gap_files_checked = false; } } @@ -1508,8 +1511,9 @@ impl SMBState { }; self.post_gap_housekeeping(STREAM_TOSERVER); - if self.check_post_gap_file_txs { + if self.check_post_gap_file_txs && !self.post_gap_files_checked { self.post_gap_housekeeping_for_files(); + self.post_gap_files_checked = true; } AppLayerResult::ok() } @@ -1748,8 +1752,9 @@ impl SMBState { } }; self.post_gap_housekeeping(STREAM_TOCLIENT); - if self.check_post_gap_file_txs { + if self.check_post_gap_file_txs && !self.post_gap_files_checked { self.post_gap_housekeeping_for_files(); + self.post_gap_files_checked = true; } self._debug_tx_stats(); AppLayerResult::ok()