record last index when starting to encode a CONTINUATION frame
This commit is contained in:
@@ -88,9 +88,11 @@ impl Encoder {
|
||||
dst.truncate(len);
|
||||
}
|
||||
|
||||
unreachable!();
|
||||
unreachable!("encode_size_updates errored");
|
||||
}
|
||||
|
||||
let mut last_index = None;
|
||||
|
||||
if let Some(resume) = resume {
|
||||
let len = dst.len();
|
||||
|
||||
@@ -103,10 +105,9 @@ impl Encoder {
|
||||
dst.truncate(len);
|
||||
return Encode::Partial(resume);
|
||||
}
|
||||
last_index = Some(resume.index);
|
||||
}
|
||||
|
||||
let mut last_index = None;
|
||||
|
||||
for header in headers {
|
||||
let len = dst.len();
|
||||
|
||||
@@ -132,13 +133,15 @@ impl Encoder {
|
||||
// which case, we skip table lookup and just use the same index
|
||||
// as the previous entry.
|
||||
Err(value) => {
|
||||
let res =
|
||||
self.encode_header_without_name(last_index.as_ref().unwrap(), &value, dst);
|
||||
let index = last_index.as_ref().unwrap_or_else(|| {
|
||||
panic!("encoding header without name, but not previous index to use for name");
|
||||
});
|
||||
let res = self.encode_header_without_name(index, &value, dst);
|
||||
|
||||
if res.is_err() {
|
||||
dst.truncate(len);
|
||||
return Encode::Partial(EncodeState {
|
||||
index: last_index.unwrap(),
|
||||
index: last_index.unwrap(), // checked just above
|
||||
value: Some(value),
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user