@ -199,6 +199,12 @@ impl HTTP2Transaction {
let xid : u32 = self . tx_id as u32 ;
if dir = = STREAM_TOCLIENT {
self . ft_tc . tx_id = self . tx_id - 1 ;
if ! self . ft_tc . file_open {
// we are now sure that new_chunk will open a file
// even if it may close it right afterwards
self . tx_data . incr_files_opened ( ) ;
}
self . ft_tc . new_chunk (
sfcm ,
files ,
@ -212,6 +218,10 @@ impl HTTP2Transaction {
& xid ,
) ;
} else {
self . ft_ts . tx_id = self . tx_id - 1 ;
if ! self . ft_ts . file_open {
self . tx_data . incr_files_opened ( ) ;
}
self . ft_ts . new_chunk (
sfcm ,
files ,
@ -839,14 +849,7 @@ impl HTTP2State {
//borrow checker forbids to reuse directly tx
let index = self . find_tx_index ( sid ) ;
if index > 0 {
let mut tx_same = & mut self . transactions [ index - 1 ] ;
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 tx_same = & mut self . transactions [ index - 1 ] ;
let ( files , flags ) = self . files . get ( dir ) ;
match tx_same . decompress (
& rem [ .. hlsafe ] ,
@ -859,17 +862,7 @@ 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 ( ) ;
}
}
}
_ = > { }
}
}
}