From: Victor Julien Date: Thu, 18 Mar 2021 07:36:22 +0000 (+0100) Subject: http2: support per-tx file accounting X-Git-Tag: suricata-6.0.4~66 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f8a50a66ca3ac8f69f6734a1a61855797290b4d4;p=thirdparty%2Fsuricata.git http2: support per-tx file accounting (cherry picked from commit c1dfb619c4313f66322f89969e54c4ea01bbb9dc) --- diff --git a/rust/src/http2/http2.rs b/rust/src/http2/http2.rs index b2e62ec53c..c6676d66cc 100644 --- a/rust/src/http2/http2.rs +++ b/rust/src/http2/http2.rs @@ -840,11 +840,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], @@ -857,7 +859,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(); + } + } + } } } }