-
Hi - if I set Settings.SendBufferingEnabled = FALSE; Settings.IsSet.SendBufferingEnabled = TRUE; settings says that MsQuic will hold application buffers until sent data is acknowledged. I'm not sure exactly when the receiver sends acknowledgement. Should I only get QUIC_STREAM_EVENT_SEND_COMPLETE after the receiver processes QUIC_STREAM_EVENT_RECEIVE or later calls StreamReceiveComplete (preferable for me)? I have a rough test (but no logs at the moment) which seems to show me getting QUIC_STREAM_EVENT_SEND_COMPLETE before both of those have occurred, at least for first ~50k of data, but then later on if I send more but delay StreamReceiveComplete I can see that QUIC_STREAM_EVENT_SEND_COMPLETE does not occur until after StreamReceiveComplete. Does anyone know what might be going on? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
The data is acknowledged by the peer transport, not application layer. So, you might get a send complete even before the peer ever got a RECEIVE event. The peer may never get that receive event if it ends up shutting down the stream first. So you cannot rely on the send complete to give you any information about the peer's application view of the data. |
Beta Was this translation helpful? Give feedback.
The data is acknowledged by the peer transport, not application layer. So, you might get a send complete even before the peer ever got a RECEIVE event. The peer may never get that receive event if it ends up shutting down the stream first.
So you cannot rely on the send complete to give you any information about the peer's application view of the data.