Extra log output
This commit is contained in:
@@ -128,9 +128,17 @@ impl Headers {
|
||||
{
|
||||
let flags = HeadersFlag(head.flag());
|
||||
|
||||
trace!("loading headers; flags={:?}", flags);
|
||||
|
||||
// Read the padding length
|
||||
if flags.is_padded() {
|
||||
let pad = src.get_u8() as usize;
|
||||
let len = src.get_ref().len();
|
||||
|
||||
if pad >= len {
|
||||
trace!("too much padding");
|
||||
return Err(Error::TooMuchPadding);
|
||||
}
|
||||
|
||||
// Truncate the last `pad` bytes.
|
||||
let len = src.get_ref().len() - pad;
|
||||
@@ -178,7 +186,7 @@ impl Headers {
|
||||
// priority.
|
||||
//
|
||||
// TODO: Provide a way to abort decoding if an error is hit.
|
||||
try!(decoder.decode(src, |header| {
|
||||
let res = decoder.decode(src, |header| {
|
||||
use hpack::Header::*;
|
||||
|
||||
match header {
|
||||
@@ -191,9 +199,15 @@ impl Headers {
|
||||
Path(v) => set_pseudo!(path, v),
|
||||
Status(v) => set_pseudo!(status, v),
|
||||
}
|
||||
}));
|
||||
});
|
||||
|
||||
if let Err(e) = res {
|
||||
trace!("hpack decoding error; err={:?}", e);
|
||||
return Err(e.into());
|
||||
}
|
||||
|
||||
if err {
|
||||
trace!("repeated pseudo");
|
||||
return Err(hpack::DecoderError::RepeatedPseudo.into());
|
||||
}
|
||||
|
||||
|
||||
@@ -171,16 +171,20 @@ impl Decoder {
|
||||
self.last_max_update = size;
|
||||
}
|
||||
|
||||
trace!("decode");
|
||||
|
||||
while src.has_remaining() {
|
||||
// At this point we are always at the beginning of the next block
|
||||
// within the HPACK data. The type of the block can always be
|
||||
// determined from the first byte.
|
||||
match try!(Representation::load(peek_u8(src))) {
|
||||
Indexed => {
|
||||
trace!(" Indexed; rem={:?}", src.remaining());
|
||||
can_resize = false;
|
||||
f(try!(self.decode_indexed(src)));
|
||||
}
|
||||
LiteralWithIndexing => {
|
||||
trace!(" LiteralWithIndexing; rem={:?}", src.remaining());
|
||||
can_resize = false;
|
||||
let entry = try!(self.decode_literal(src, true));
|
||||
|
||||
@@ -190,11 +194,13 @@ impl Decoder {
|
||||
f(entry);
|
||||
}
|
||||
LiteralWithoutIndexing => {
|
||||
trace!(" LiteralWithoutIndexing; rem={:?}", src.remaining());
|
||||
can_resize = false;
|
||||
let entry = try!(self.decode_literal(src, false));
|
||||
f(entry);
|
||||
}
|
||||
LiteralNeverIndexed => {
|
||||
trace!(" LiteralNeverIndexed; rem={:?}", src.remaining());
|
||||
can_resize = false;
|
||||
let entry = try!(self.decode_literal(src, false));
|
||||
|
||||
@@ -203,6 +209,7 @@ impl Decoder {
|
||||
f(entry);
|
||||
}
|
||||
SizeUpdate => {
|
||||
trace!(" SizeUpdate; rem={:?}", src.remaining());
|
||||
if !can_resize {
|
||||
return Err(DecoderError::InvalidMaxDynamicSize);
|
||||
}
|
||||
@@ -277,6 +284,7 @@ impl Decoder {
|
||||
let len = try!(decode_int(buf, 7));
|
||||
|
||||
if len > buf.remaining() {
|
||||
trace!("decode_string underflow; len={}; remaining={}", len, buf.remaining());
|
||||
return Err(DecoderError::StringUnderflow);
|
||||
}
|
||||
|
||||
|
||||
@@ -50,6 +50,8 @@ impl<T> FramedRead<T> {
|
||||
|
||||
let kind = head.kind();
|
||||
|
||||
trace!(" -> kind={:?}", kind);
|
||||
|
||||
let frame = match kind {
|
||||
Kind::Settings => {
|
||||
frame::Settings::load(head, &bytes[frame::HEADER_LEN..])?.into()
|
||||
|
||||
Reference in New Issue
Block a user