quiche icon indicating copy to clipboard operation
quiche copied to clipboard

Stream capacity exceed

Open mfarhanmail opened this issue 3 years ago • 3 comments

Hi i have integrated quiche for android using native jni by building quiche so file. While am sending stream, packets are accepted till the stream has buffer capacity, once this capacity is exceeded am getting Err(Error::Done) as it's per version quiche.0.10.0. Now am not able to proceed further as what should be done if i get this error. How should i increase the stream capacity limit or reset it back again as i have to continue streaming without any blockage.

mfarhanmail avatar Nov 24 '21 07:11 mfarhanmail

Hi.

QUIC Flow control is explained in RFC 9000 Section 4. In a nutshell, the data receiver tells the data sender how much window (in bytes) you can use at the start of each stream. Once the data sender hits that limit, the only way to progress is for the data receiver to issue MAX_DATA / MAX_STREAM_DATA to the data sender. How and when that happens is up to the data receiver, there is no way to control it from the data sender.

When using quiche, we process incoming packets and frames and update the window sizes via the recv() method. Your application will need to find the balance between sending and receiving QUIC packets to allow forward progress as a data sender.

LPardue avatar Nov 24 '21 19:11 LPardue

Hi, thats ok. I even see the capacity going down and up as and when bytes are written to stream. And finally it goes to point when capacity becomes totally zero and Err::Done is thrown. And also i was checking with maxIdleTimeout feature to check if library maintains keepalive for specified time and so the lib maintained the connection (it went through connecting and acknowledgement phases of protocol) but again when started streaming after connection is regained back capacity of stream kept on decreasing and became 0 and never got up. Am literally confused why does the capacity goes up and down.

mfarhanmail avatar Nov 25 '21 09:11 mfarhanmail

we'd need to see trace logs or qlogs to understand what is happening with QUIC in your application

LPardue avatar Dec 10 '21 01:12 LPardue

Closing due to inactivity. Please reopen if there is more information.

LPardue avatar Aug 11 '22 18:08 LPardue