diff --git a/quinn-proto/src/connection/streams/state.rs b/quinn-proto/src/connection/streams/state.rs index a701d31bd..e0c4618d1 100644 --- a/quinn-proto/src/connection/streams/state.rs +++ b/quinn-proto/src/connection/streams/state.rs @@ -800,14 +800,7 @@ impl StreamsState { pub(super) fn insert(&mut self, remote: bool, id: StreamId) { let bi = id.dir() == Dir::Bi; if bi || !remote { - let max_data = match id.dir() { - Dir::Uni => self.initial_max_stream_data_uni, - // Remote/local appear reversed here because the transport parameters are named from - // the perspective of the peer. - Dir::Bi if remote => self.initial_max_stream_data_bidi_local, - Dir::Bi => self.initial_max_stream_data_bidi_remote, - }; - let stream = Send::new(max_data); + let stream = Send::new(self.max_send_data(id)); assert!(self.send.insert(id, stream).is_none()); } if bi || remote { @@ -865,6 +858,17 @@ impl StreamsState { self.send_streams -= 1; } } + + pub(super) fn max_send_data(&self, id: StreamId) -> VarInt { + let remote = self.side != id.initiator(); + match id.dir() { + Dir::Uni => self.initial_max_stream_data_uni, + // Remote/local appear reversed here because the transport parameters are named from + // the perspective of the peer. + Dir::Bi if remote => self.initial_max_stream_data_bidi_local, + Dir::Bi => self.initial_max_stream_data_bidi_remote, + } + } } #[cfg(test)]