forked from boostorg/beast
Add pause option to on_headers interface:
* on_headers returns enum body_what * body_what::pause lets caller receive headers during the parse
This commit is contained in:
1 parent
ce18124566
commit
2106f364f6
10 files changed
+90
-48
No files matched your search
@@ -899,21 +899,22 @@ write(boost::asio::const_buffer const& buffer, error_code& ec)
|
||||
return err(parse_error::illegal_content_length);
|
||||
upgrade_ = ((flags_ & (parse_flag::upgrade | parse_flag::connection_upgrade)) ==
|
||||
(parse_flag::upgrade | parse_flag::connection_upgrade)) /*|| method == "connect"*/;
|
||||
auto const maybe_skip = call_on_headers(ec);
|
||||
auto const what = call_on_headers(ec);
|
||||
if(ec)
|
||||
return errc();
|
||||
switch(maybe_skip)
|
||||
switch(what)
|
||||
{
|
||||
case 0:
|
||||
case body_what::normal:
|
||||
break;
|
||||
case 2:
|
||||
case body_what::upgrade:
|
||||
upgrade_ = true;
|
||||
// fall through
|
||||
case 1:
|
||||
case body_what::skip:
|
||||
flags_ |= parse_flag::skipbody;
|
||||
break;
|
||||
default:
|
||||
return err(parse_error::bad_on_headers_rv);
|
||||
case body_what::pause:
|
||||
s_ = s_headers_done;
|
||||
return used();
|
||||
}
|
||||
s_ = s_headers_done;
|
||||
// fall through
|
||||
|
||||
@@ -47,7 +47,6 @@ public:
|
||||
case parse_error::bad_value: return "bad field-value";
|
||||
case parse_error::bad_content_length: return "bad Content-Length";
|
||||
case parse_error::illegal_content_length: return "illegal Content-Length with chunked Transfer-Encoding";
|
||||
case parse_error::bad_on_headers_rv: return "on_headers returned an unknown value";
|
||||
case parse_error::invalid_chunk_size: return "invalid chunk size";
|
||||
case parse_error::invalid_ext_name: return "invalid ext name";
|
||||
case parse_error::invalid_ext_val: return "invalid ext val";
|
||||
|
||||
Reference in new issue
Block a user