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
{{ message }}
Repository navigation
Document content length check is applied to outoing-body output-stream #809
In the current WIT definitions, outgoing-bodyfinish defines that the content length must be validated against the actual length.
But, in addition to this, the Wasmtime implementation also throws a stream error from the output-stream for the outgoing-body as soon as a write is made that exceeds the expected content length. Thus this check is not only performed at finish but also dynamically with each write operation to the stream.
If this is the defined behaviour, it should be documented in the WIT.
Agreed we should document this on outgoing-body.write!
One way to implement this is for check-write to refuse readiness once the content-length has been reached, but this is difficult to debug because blocking-write would loop forever, or have to trap.
Instead we should specify that check-write may allow writes beyond the content-length, but if those writes are performed, write (or blocking-write or blocking-write-and-flush) will throw a last-operation-failed that will downcast to a HTTP-{request,response}-body-size.
Activity
pchickey commentedon Nov 27, 2023
Agreed we should document this on
outgoing-body.write!One way to implement this is for
check-writeto refuse readiness once the content-length has been reached, but this is difficult to debug becauseblocking-writewould loop forever, or have to trap.Instead we should specify that
check-writemay allow writes beyond the content-length, but if those writes are performed,write(orblocking-writeorblocking-write-and-flush) will throw alast-operation-failedthat will downcast to aHTTP-{request,response}-body-size.