smb: check post-gap timeouts once a second at most

pull/5138/head
Victor Julien 6 years ago
parent 8aa380600d
commit 25f2efe977

@ -783,6 +783,7 @@ pub struct SMBState<> {
/// true as long as we have file txs that are in a post-gap /// 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. /// state. It means we'll do extra house keeping for those.
check_post_gap_file_txs: bool, check_post_gap_file_txs: bool,
post_gap_files_checked: bool,
/// transactions list /// transactions list
pub transactions: Vec<SMBTransaction>, pub transactions: Vec<SMBTransaction>,
@ -827,6 +828,7 @@ impl SMBState {
ts_trunc: false, ts_trunc: false,
tc_trunc: false, tc_trunc: false,
check_post_gap_file_txs: false, check_post_gap_file_txs: false,
post_gap_files_checked: false,
transactions: Vec::new(), transactions: Vec::new(),
tx_id:0, tx_id:0,
dialect:0, dialect:0,
@ -927,6 +929,7 @@ impl SMBState {
fn update_ts(&mut self, ts: u64) { fn update_ts(&mut self, ts: u64) {
if ts != self.ts { if ts != self.ts {
self.ts = ts; self.ts = ts;
self.post_gap_files_checked = false;
} }
} }
@ -1508,8 +1511,9 @@ impl SMBState {
}; };
self.post_gap_housekeeping(STREAM_TOSERVER); 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_housekeeping_for_files();
self.post_gap_files_checked = true;
} }
AppLayerResult::ok() AppLayerResult::ok()
} }
@ -1748,8 +1752,9 @@ impl SMBState {
} }
}; };
self.post_gap_housekeeping(STREAM_TOCLIENT); 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_housekeeping_for_files();
self.post_gap_files_checked = true;
} }
self._debug_tx_stats(); self._debug_tx_stats();
AppLayerResult::ok() AppLayerResult::ok()

Loading…
Cancel
Save