diff --git a/quinn-proto/src/connection.rs b/quinn-proto/src/connection.rs index 0546de492..96a79e643 100644 --- a/quinn-proto/src/connection.rs +++ b/quinn-proto/src/connection.rs @@ -804,20 +804,6 @@ impl Connection { self.set_loss_detection_alarm(config); } - pub fn update_keys( - &mut self, - packet: u64, - header: &[u8], - payload: &mut BytesMut, - ) -> Result<(), ()> { - let new = self.crypto.as_mut().unwrap().update(self.side); - new.decrypt(packet, header, payload)?; - let old = mem::replace(self.crypto.as_mut().unwrap(), new); - self.prev_crypto = Some((packet, old)); - self.key_phase = !self.key_phase; - Ok(()) - } - pub fn transmit_handshake(&mut self, messages: &[u8]) { let offset = { let ss = self @@ -2460,8 +2446,13 @@ impl Connection { // Illegal key update return Err(Some(TransportError::PROTOCOL_VIOLATION)); } - self.update_keys(number, &packet.header_data, &mut packet.payload) - .map_err(|_| None)?; + let new = self.crypto.as_mut().unwrap().update(self.side); + new.decrypt(number, &packet.header_data, &mut packet.payload) + .map_err(|()| None)?; + + let old = mem::replace(self.crypto.as_mut().unwrap(), new); + self.prev_crypto = Some((number, old)); + self.key_phase = !self.key_phase; Ok((packet.payload.to_vec(), number)) } else { let crypto = match (handshake, &self.prev_crypto) {