Skip to content

Commit c4bb9eb

Browse files
committed
feat(decompression-plz): changed truncate_value to update_header_multiple_values_on_position for PartialCompressionError
1 parent c81ded3 commit c4bb9eb

File tree

1 file changed

+23
-24
lines changed

1 file changed

+23
-24
lines changed

decompression-plz/src/state.rs

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
use std::cmp::Ordering;
2-
31
use body_plz::variants::Body;
42
use bytes::BytesMut;
53
use header_plz::body_headers::encoding_info::EncodingInfo;
@@ -146,28 +144,29 @@ where
146144
{
147145
decode_struct.body = partial_body.split();
148146
decode_struct.extra_body = None;
149-
for einfo in encoding_info.iter().rev() {
150-
match einfo.header_index.cmp(&header_index) {
151-
Ordering::Less | Ordering::Equal => {
152-
let last_failed = einfo
153-
.encodings()
154-
.iter()
155-
.rev()
156-
.nth(compression_index)
157-
.unwrap();
158-
decode_struct
159-
.message
160-
.truncate_header_value_on_position(
161-
einfo.header_index,
162-
last_failed,
163-
);
164-
break;
165-
}
166-
Ordering::Greater => {
167-
decode_struct
168-
.message
169-
.remove_header_on_position(einfo.header_index);
170-
}
147+
dbg!(&header_index);
148+
dbg!(&compression_index);
149+
for (index, einfo) in encoding_info.iter().rev().enumerate() {
150+
if index > header_index {
151+
decode_struct
152+
.message
153+
.remove_header_on_position(einfo.header_index);
154+
} else {
155+
let iter = einfo
156+
.encodings()
157+
.iter()
158+
.rev()
159+
.skip(compression_index)
160+
.rev()
161+
.map(|e| e.as_ref());
162+
decode_struct
163+
.message
164+
.header_map_as_mut()
165+
.update_header_multiple_values_on_position(
166+
einfo.header_index,
167+
iter,
168+
);
169+
break;
171170
}
172171
}
173172
}

0 commit comments

Comments
 (0)