You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am working on an application, where I have a small-ish number of bytes to send (they usually fit in one UDP packet), and all of those bytes should go in one fresh stream that is marked fin immediately. Due to the way the application is structured, it is very inconvenient to deal with partial writes, so I would like to check beforehand that Quiche can accept the entire write.
Problem
We can check whether a new stream can be opened with peer_streams_left_uni, but that is no guarantee that we can write all bytes.
There is stream_capacity, but it only works for existing streams, not new streams.
I suppose I could try to do a zero-length stream_send first to ensure the stream exists, and then check its capacity, but this is wasteful because there is a lot of logic in stream_send that would be executed twice.
Ideas
Looking through the implementation of stream_capacity, there is tx_cap, which looks like exactly what I need. Are there any caveats to exposing it?
The text was updated successfully, but these errors were encountered:
The amount of stream data that can be buffered is determined by both flow control and congestion control. stream_capacity() returns the minimum of these. Returning either in isolation risks confusing apps about what will subsequently happen.
Possibly one solution is to have a reserve_stream() function. However, it would need to take care to initialize all the relevant internal data structures
Background
I am working on an application, where I have a small-ish number of bytes to send (they usually fit in one UDP packet), and all of those bytes should go in one fresh stream that is marked fin immediately. Due to the way the application is structured, it is very inconvenient to deal with partial writes, so I would like to check beforehand that Quiche can accept the entire write.
Problem
peer_streams_left_uni
, but that is no guarantee that we can write all bytes.stream_capacity
, but it only works for existing streams, not new streams.stream_send
first to ensure the stream exists, and then check its capacity, but this is wasteful because there is a lot of logic instream_send
that would be executed twice.Ideas
Looking through the implementation of
stream_capacity
, there istx_cap
, which looks like exactly what I need. Are there any caveats to exposing it?The text was updated successfully, but these errors were encountered: