forked from boostorg/beast
1 parent
7d92048c5c
commit
ca109693fb
32 files changed
+276
-67
No files matched your search
@@ -94,7 +94,10 @@ put(ConstBufferSequence const& buffers,
|
||||
auto const p = buffers.begin();
|
||||
auto const last = buffers.end();
|
||||
if(p == last)
|
||||
{
|
||||
ec = {};
|
||||
return 0;
|
||||
}
|
||||
if(std::next(p) == last)
|
||||
{
|
||||
// single buffer
|
||||
@@ -196,7 +199,8 @@ loop:
|
||||
break;
|
||||
|
||||
case state::complete:
|
||||
break;
|
||||
ec = {};
|
||||
goto done;
|
||||
}
|
||||
if(p < p1 && ! is_done() && eager())
|
||||
{
|
||||
@@ -225,6 +229,7 @@ put_eof(error_code& ec)
|
||||
ec = error::partial_message;
|
||||
return;
|
||||
}
|
||||
ec = {};
|
||||
return;
|
||||
}
|
||||
impl().on_complete(ec);
|
||||
@@ -789,6 +794,7 @@ do_field(field f,
|
||||
continue;
|
||||
}
|
||||
}
|
||||
ec = {};
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -827,6 +833,7 @@ do_field(field f,
|
||||
return;
|
||||
}
|
||||
|
||||
ec = {};
|
||||
len_ = v;
|
||||
f_ |= flagContentLength;
|
||||
return;
|
||||
@@ -849,6 +856,7 @@ do_field(field f,
|
||||
return;
|
||||
}
|
||||
|
||||
ec = {};
|
||||
auto const v = token_list{value};
|
||||
auto const p = std::find_if(v.begin(), v.end(),
|
||||
[&](typename token_list::value_type const& s)
|
||||
@@ -867,10 +875,12 @@ do_field(field f,
|
||||
// Upgrade
|
||||
if(f == field::upgrade)
|
||||
{
|
||||
f_ |= flagUpgrade;
|
||||
ec = {};
|
||||
f_ |= flagUpgrade;
|
||||
return;
|
||||
}
|
||||
|
||||
ec = {};
|
||||
}
|
||||
|
||||
} // http
|
||||
|
||||
@@ -467,7 +467,6 @@ read_some(
|
||||
break;
|
||||
if(ec != http::error::need_more)
|
||||
break;
|
||||
ec = {};
|
||||
do_read:
|
||||
boost::optional<typename
|
||||
DynamicBuffer::mutable_buffers_type> b;
|
||||
@@ -479,7 +478,7 @@ read_some(
|
||||
catch(std::length_error const&)
|
||||
{
|
||||
ec = error::buffer_overflow;
|
||||
break;
|
||||
return;
|
||||
}
|
||||
auto const bytes_transferred =
|
||||
stream.read_some(*b, ec);
|
||||
@@ -489,7 +488,6 @@ read_some(
|
||||
if(parser.got_some())
|
||||
{
|
||||
// caller sees EOF on next read
|
||||
ec = {};
|
||||
parser.put_eof(ec);
|
||||
if(ec)
|
||||
break;
|
||||
@@ -570,12 +568,18 @@ read_header(
|
||||
static_assert(is_dynamic_buffer<DynamicBuffer>::value,
|
||||
"DynamicBuffer requirements not met");
|
||||
parser.eager(false);
|
||||
while(! parser.is_header_done())
|
||||
if(parser.is_header_done())
|
||||
{
|
||||
ec = {};
|
||||
return;
|
||||
}
|
||||
do
|
||||
{
|
||||
read_some(stream, buffer, parser, ec);
|
||||
if(ec)
|
||||
return;
|
||||
}
|
||||
while(! parser.is_header_done());
|
||||
}
|
||||
|
||||
template<
|
||||
@@ -643,12 +647,18 @@ read(
|
||||
static_assert(is_dynamic_buffer<DynamicBuffer>::value,
|
||||
"DynamicBuffer requirements not met");
|
||||
parser.eager(true);
|
||||
while(! parser.is_done())
|
||||
if(parser.is_done())
|
||||
{
|
||||
ec = {};
|
||||
return;
|
||||
}
|
||||
do
|
||||
{
|
||||
read_some(stream, buffer, parser, ec);
|
||||
if(ec)
|
||||
return;
|
||||
}
|
||||
while(! parser.is_done());
|
||||
}
|
||||
|
||||
template<
|
||||
|
||||
@@ -60,7 +60,8 @@ get(error_code& ec, Visit&& visit)
|
||||
frdinit(std::integral_constant<bool,
|
||||
isRequest>{});
|
||||
close_ = m_.has_close() || (
|
||||
m_.version < 11 && ! m_.has_content_length());
|
||||
m_.version < 11 &&
|
||||
! m_.has_content_length());
|
||||
if(m_.has_chunked())
|
||||
goto go_init_c;
|
||||
s_ = do_init;
|
||||
|
||||
@@ -56,6 +56,7 @@ class write_some_op
|
||||
operator()(error_code& ec,
|
||||
ConstBufferSequence const& buffer)
|
||||
{
|
||||
ec = {};
|
||||
invoked = true;
|
||||
return op_.s_.async_write_some(
|
||||
buffer, std::move(op_));
|
||||
@@ -212,6 +213,7 @@ class write_op
|
||||
operator()(error_code& ec,
|
||||
ConstBufferSequence const& buffer)
|
||||
{
|
||||
ec = {};
|
||||
invoked = true;
|
||||
return op_.s_.async_write_some(
|
||||
buffer, std::move(op_));
|
||||
@@ -533,14 +535,16 @@ write_some(SyncWriteStream& stream, serializer<
|
||||
static_assert(is_body_reader<Body>::value,
|
||||
"BodyReader requirements not met");
|
||||
detail::write_some_lambda<SyncWriteStream> f{stream};
|
||||
if(! sr.is_done())
|
||||
if(sr.is_done())
|
||||
{
|
||||
sr.get(ec, f);
|
||||
if(ec)
|
||||
return;
|
||||
if(f.invoked)
|
||||
sr.consume(f.bytes_transferred);
|
||||
ec = {};
|
||||
return;
|
||||
}
|
||||
sr.get(ec, f);
|
||||
if(ec)
|
||||
return;
|
||||
if(f.invoked)
|
||||
sr.consume(f.bytes_transferred);
|
||||
}
|
||||
|
||||
template<class AsyncWriteStream,
|
||||
@@ -603,8 +607,13 @@ write_header(SyncWriteStream& stream, serializer<
|
||||
static_assert(is_body_reader<Body>::value,
|
||||
"BodyReader requirements not met");
|
||||
sr.split(true);
|
||||
if(sr.is_header_done())
|
||||
{
|
||||
ec = {};
|
||||
return;
|
||||
}
|
||||
detail::write_lambda<SyncWriteStream> f{stream};
|
||||
while(! sr.is_header_done())
|
||||
do
|
||||
{
|
||||
sr.get(ec, f);
|
||||
if(ec)
|
||||
@@ -612,6 +621,7 @@ write_header(SyncWriteStream& stream, serializer<
|
||||
BOOST_ASSERT(f.invoked);
|
||||
sr.consume(f.bytes_transferred);
|
||||
}
|
||||
while(! sr.is_header_done());
|
||||
}
|
||||
|
||||
template<class AsyncWriteStream,
|
||||
@@ -668,8 +678,13 @@ write(SyncWriteStream& stream, serializer<
|
||||
static_assert(is_sync_write_stream<SyncWriteStream>::value,
|
||||
"SyncWriteStream requirements not met");
|
||||
sr.split(false);
|
||||
if(sr.is_done())
|
||||
{
|
||||
ec = {};
|
||||
return;
|
||||
}
|
||||
detail::write_lambda<SyncWriteStream> f{stream};
|
||||
while(! sr.is_done())
|
||||
do
|
||||
{
|
||||
sr.get(ec, f);
|
||||
if(ec)
|
||||
@@ -677,6 +692,7 @@ write(SyncWriteStream& stream, serializer<
|
||||
if(f.invoked)
|
||||
sr.consume(f.bytes_transferred);
|
||||
}
|
||||
while(! sr.is_done());
|
||||
if(sr.need_close())
|
||||
ec = error::end_of_stream;
|
||||
}
|
||||
@@ -792,9 +808,12 @@ public:
|
||||
|
||||
template<class ConstBufferSequence>
|
||||
void
|
||||
operator()(error_code&,
|
||||
operator()(error_code& ec,
|
||||
ConstBufferSequence const& buffers) const
|
||||
{
|
||||
ec = {};
|
||||
if(os_.fail())
|
||||
return;
|
||||
std::size_t bytes_transferred = 0;
|
||||
using boost::asio::buffer_cast;
|
||||
using boost::asio::buffer_size;
|
||||
|
||||
Reference in new issue
Block a user