Reset error codes

fix #478
This commit is contained in:
Vinnie Falco committed 2017-07-20 08:12:20 -07:00
1 parent 7d92048c5c
commit ca109693fb
32 files changed
+276 -67

No files matched your search

+12 -2
View File
@@ -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
+15 -5
View File
@@ -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<
+2 -1
View File
@@ -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;
+28 -9
View File
@@ -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;