}
// header.length was checked against rest.len() during parsing
let (mut framebuf, next_buf) = rest.split_at(header.length.into());
- let hlen = buf.len() - rest.len();
- let mut output;
- if self.keys.is_some() && !framebuf.is_empty() {
- output = Vec::with_capacity(framebuf.len() + 4);
- if let Ok(dlen) =
- self.decrypt(to_server, &header, framebuf, buf, hlen, &mut output)
- {
- output.resize(dlen, 0);
- } else {
- self.set_event_notx(QuicEvent::FailedDecrypt, header, to_server);
- return false;
- }
- framebuf = &output;
- }
- buf = next_buf;
-
if header.ty != QuicType::Initial {
// only version is interesting, no frames
self.new_tx(
to_server,
false,
);
+ buf = next_buf;
continue;
}
+ let hlen = buf.len() - rest.len();
+ let mut output;
+ if self.keys.is_some() && !framebuf.is_empty() {
+ output = Vec::with_capacity(framebuf.len() + 4);
+ if let Ok(dlen) =
+ self.decrypt(to_server, &header, framebuf, buf, hlen, &mut output)
+ {
+ output.resize(dlen, 0);
+ } else {
+ self.set_event_notx(QuicEvent::FailedDecrypt, header, to_server);
+ return false;
+ }
+ framebuf = &output;
+ }
+ buf = next_buf;
let mut frag = Vec::new();
// take the current fragment and reset it in the state