-
Notifications
You must be signed in to change notification settings - Fork 110
Description
Line 433 in 84316da
| buf: BufList::new(), |
The poll_read() on BufRecvStream (wrapping the underlying QUIC provider's stream) is buffering chunks in-memory in a BufList that appears to grows without bounds:
Lines 448 to 450 in 84316da
| if let Some(mut data) = data { | |
| self.buf.push_bytes(&mut data); | |
| Poll::Ready(Ok(false)) |
In some tests that I ran over loopback to send and receive data as fast as possible, if the client does not consume from BufRecvStream quickly (for any reason) I observed that the client memory grows without bounds. This should ideally not be the case -- a slow consumer should back-pressure the sender. This problem does not exist if I use the underlying QUIC provider's stream directly.
I don't have a handy reproducer that I can share at the moment, but I can work on one if it'll be useful.