docs(quic): say which sends Abort() reports false

Abort()'s comment and the consumer notes said every send not yet
delivered reports false. msquic completes a send, true, as soon as it
has copied it into its send buffer, and the reset then discards it, so
only the sends msquic had not taken yet report false; the byte-cap case
in ShouldRecieveByCallbackQUIC saw all sixteen of the peer's report
true. Also: an onData already under way on another thread when Abort()
is called finishes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jorijn van der Graaf 2026-11-01 02:35:05 +01:00
commit f346237944
Signed by: jorijnvdgraaf
GPG key ID: 2937E59CDCC1BCFB
2 changed files with 9 additions and 7 deletions

View file

@ -227,12 +227,14 @@ namespace Crafter {
// Reset both directions at once with a QUIC application error code
// (62 bits; larger values are clamped): the peer's receive side sees
// a reset and its send side a stop-sending. Returns at once. Sends
// not yet delivered report false, no onData follows (not even the
// rest of a run being delivered when called from inside one), and
// onEnd(false) follows unless the end was delivered already or the
// wrapper is destroyed first. Callable from any thread and from
// inside this stream's callbacks, which is how a server enforces a
// byte cap. A no-op on a closed or moved-from wrapper.
// msquic has not taken yet report false (one already in its send
// buffer reported true, and the reset discards it); no onData
// follows (not even the rest of a run being delivered when called
// from inside one; from another thread, one already under way
// finishes); and onEnd(false) follows unless the end was delivered
// already or the wrapper is destroyed first. Callable from any thread
// and from inside this stream's callbacks, which is how a server
// enforces a byte cap. A no-op on a closed or moved-from wrapper.
void Abort(std::uint64_t errorCode = 0);
#endif