Move stream reset code into Streams type

This commit is contained in:
Dirkjan Ochtman
2019-03-28 20:36:18 +01:00
committed by Benjamin Saunders
parent 16210a1646
commit 5ea7cc97cf
2 changed files with 17 additions and 15 deletions
+1 -15
View File
@@ -2871,21 +2871,7 @@ impl Connection {
debug_assert!(self.side.is_client());
debug!(self.log, "0-RTT rejected");
self.accepted_0rtt = false;
// Reset all outgoing streams
for i in 0..self.streams.next_bi {
self.streams
.streams
.remove(&StreamId::new(self.side, Directionality::Bi, i))
.unwrap();
}
self.streams.next_bi = 0;
for i in 0..self.streams.next_uni {
self.streams
.streams
.remove(&StreamId::new(self.side, Directionality::Uni, i))
.unwrap();
}
self.streams.next_uni = 0;
self.streams.reset(self.side);
// Discard already-queued frames
self.space_mut(SpaceId::Data).pending = Retransmits::default();
// Discard 0-RTT packets
+16
View File
@@ -88,6 +88,22 @@ impl Streams {
}
}
pub fn reset(&mut self, side: Side) {
// Reset all outgoing streams
for i in 0..self.next_bi {
self.streams
.remove(&StreamId::new(side, Directionality::Bi, i))
.unwrap();
}
self.next_bi = 0;
for i in 0..self.next_uni {
self.streams
.remove(&StreamId::new(side, Directionality::Uni, i))
.unwrap();
}
self.next_uni = 0;
}
pub fn read(&mut self, id: StreamId, buf: &mut [u8]) -> Result<(usize, bool), ReadError> {
let rs = self.get_recv_mut(id).ok_or(ReadError::UnknownStream)?;
Ok((rs.read(buf)?, rs.receiving_unknown_size()))