On Sun, Jul 2, 2017 at 6:21 AM, Peter Dimov via Boost
<
bo...@lists.boost.org> wrote:
> In this code, extracted from one of the examples in the documentation,
> ...
> res.body = "Invalid request-method '" + req.method_string().to_string() +
> "'";
> ...
> write(stream, res, ec);
> ...
> field::content_length isn't set.
Looks like you found a bug! One that I wrote, no less..
> Will Beast insert Content-Length based on the body size,
> or will it send the response with the field missing?
Beast will only set the content length if you ask it to, by calling
message::prepare_payload. The library does not perform any validation
on caller-provided HTTP inputs. For example if you called
msg.set("x:y", "z") that would result in a malformed message (colons
cannot appear in field names). Or if you set the content length
manually and lied about the correct value.
> The reason I ask is that I foresee forgetting the content_length to be a
> common mistake, and an asymptomatic one.
Well it wouldn't be asymptomatic in a real server since the other end
would hang, waiting for the "end of stream" to denote the end of the
HTTP message.
Thanks