let over = head.flags & parser::HTTP2_FLAG_HEADER_EOS != 0;
let ftype = head.ftype;
let sid = head.stream_id;
+ let padded = head.flags & parser::HTTP2_FLAG_HEADER_PADDED != 0;
if dir == STREAM_TOSERVER {
tx.frames_ts.push(HTTP2Frame {
header: head,
if index > 0 {
let tx_same = &mut self.transactions[index - 1];
let (files, flags) = self.files.get(dir);
+ let mut dinput = &rem[..hlsafe];
+ if padded && rem.len() > 0 && usize::from(rem[0]) < hlsafe{
+ dinput = &rem[1..hlsafe - usize::from(rem[0])];
+ }
match tx_same.decompress(
- &rem[..hlsafe],
+ dinput,
dir,
sfcm,
over,
//end stream
pub const HTTP2_FLAG_HEADER_EOS: u8 = 0x1;
pub const HTTP2_FLAG_HEADER_END_HEADERS: u8 = 0x4;
-const HTTP2_FLAG_HEADER_PADDED: u8 = 0x8;
+pub const HTTP2_FLAG_HEADER_PADDED: u8 = 0x8;
const HTTP2_FLAG_HEADER_PRIORITY: u8 = 0x20;
pub fn http2_parse_frame_headers<'a>(