From: Victor Julien Date: Thu, 18 Mar 2021 07:36:22 +0000 (+0100) Subject: http2: support per-tx file accounting X-Git-Tag: suricata-7.0.0-beta1~1439 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c1dfb619c4313f66322f89969e54c4ea01bbb9dc;p=thirdparty%2Fsuricata.git http2: support per-tx file accounting --- diff --git a/rust/src/http2/http2.rs b/rust/src/http2/http2.rs index efb60937de..c914d9fdd3 100644 --- a/rust/src/http2/http2.rs +++ b/rust/src/http2/http2.rs @@ -807,11 +807,13 @@ impl HTTP2State { let index = self.find_tx_index(sid); if index > 0 { let mut tx_same = &mut self.transactions[index - 1]; - if dir == STREAM_TOCLIENT { + let is_open = if dir == STREAM_TOCLIENT { tx_same.ft_tc.tx_id = tx_same.tx_id - 1; + tx_same.ft_tc.file_open } else { tx_same.ft_ts.tx_id = tx_same.tx_id - 1; - } + tx_same.ft_ts.file_open + }; let (files, flags) = self.files.get(dir); match tx_same.decompress( &rem[..hlsafe], @@ -824,7 +826,17 @@ impl HTTP2State { Err(_e) => { self.set_event(HTTP2Event::FailedDecompression); } - _ => {} + _ => { + if dir == STREAM_TOCLIENT { + if !is_open && tx_same.ft_tc.file_open { + tx_same.tx_data.incr_files_opened(); + } + } else { + if !is_open && tx_same.ft_ts.file_open { + tx_same.tx_data.incr_files_opened(); + } + } + } } } }