wasi-http icon indicating copy to clipboard operation
wasi-http copied to clipboard

OutgoingBody finish content length errors

Open guybedford opened this issue 2 years ago • 4 comments

When the written body is less than the content length, the only error code that fits is internal-error.

But when the written body is more than the content length, perhaps it would make sense to use the existing HTTP-request-body-size(option<u64>) error code which is meant to be for when the body is too long? Alternatively should this also be internal-error?

Then, for both of these, it would be nice to have a proper error code instead of making it an internal error. Perhaps a dedicated HTTP-request-body-content-length-invalid(option<u64>)?

guybedford avatar Nov 23 '23 23:11 guybedford

When the written size is less than the content length, HTTP-{request,response}-body-size(option<u64>) is the correct variant to return throw from outgoing-body.finish. The outgoing-body will have to return the correct request/response variant of the error there based on what it was created from.

We need to add documentation to the error-code cases, and this information should be there, and made more explicit in the docs for outgoing-body.finish.

pchickey avatar Nov 27 '23 19:11 pchickey

When the written size is less than the content length, HTTP-{request,response}-body-size(option) is the correct variant to return throw from outgoing-body.finish.

Note this is not the case for Wasmtime currently - which throws an internal-error here instead.

guybedford avatar Nov 27 '23 20:11 guybedford

Thanks - @elliottt can you work on fixing that?

pchickey avatar Nov 27 '23 22:11 pchickey

This was landed in Wasmtime in https://github.com/bytecodealliance/wasmtime/pull/7591, so is only pending as a documentation update at this point that the error has been extended to apply to sizes less than the expected content length.

guybedford avatar Nov 30 '23 01:11 guybedford