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,
&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,
//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],
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();
- }
- }
- }
+ _ => {}
}
}
}