From 25f2efe97749611760e6e26d388b420091423732 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Sun, 17 May 2020 14:24:07 +0200 Subject: [PATCH] smb: check post-gap timeouts once a second at most --- rust/src/smb/smb.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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()