mirror of
https://github.com/boostorg/beast.git
synced 2025-08-02 06:15:24 +02:00
Refactor stream open state variable
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
Version 110:
|
||||||
|
|
||||||
|
* Refactor stream open state variable
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
Version 109:
|
Version 109:
|
||||||
|
|
||||||
* refactor test::stream
|
* refactor test::stream
|
||||||
|
@@ -134,7 +134,7 @@ operator()(error_code ec, std::size_t bytes_transferred)
|
|||||||
d.ws.wr_block_ = d.tok;
|
d.ws.wr_block_ = d.tok;
|
||||||
|
|
||||||
// Make sure the stream is open
|
// Make sure the stream is open
|
||||||
if(d.ws.failed_)
|
if(! d.ws.open_)
|
||||||
{
|
{
|
||||||
BOOST_ASIO_CORO_YIELD
|
BOOST_ASIO_CORO_YIELD
|
||||||
d.ws.get_io_service().post(
|
d.ws.get_io_service().post(
|
||||||
@@ -160,7 +160,7 @@ operator()(error_code ec, std::size_t bytes_transferred)
|
|||||||
BOOST_ASSERT(d.ws.wr_block_ == d.tok);
|
BOOST_ASSERT(d.ws.wr_block_ == d.tok);
|
||||||
|
|
||||||
// Make sure the stream is open
|
// Make sure the stream is open
|
||||||
if(d.ws.failed_)
|
if(! d.ws.open_)
|
||||||
{
|
{
|
||||||
ec = boost::asio::error::operation_aborted;
|
ec = boost::asio::error::operation_aborted;
|
||||||
goto upcall;
|
goto upcall;
|
||||||
@@ -175,7 +175,7 @@ operator()(error_code ec, std::size_t bytes_transferred)
|
|||||||
d.fb.data(), std::move(*this));
|
d.fb.data(), std::move(*this));
|
||||||
if(ec)
|
if(ec)
|
||||||
{
|
{
|
||||||
d.ws.failed_ = true;
|
d.ws.open_ = false;
|
||||||
goto upcall;
|
goto upcall;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -214,7 +214,7 @@ operator()(error_code ec, std::size_t bytes_transferred)
|
|||||||
BOOST_ASSERT(d.ws.rd_block_ == d.tok);
|
BOOST_ASSERT(d.ws.rd_block_ == d.tok);
|
||||||
|
|
||||||
// Handle the stream closing while suspended
|
// Handle the stream closing while suspended
|
||||||
if(d.ws.failed_)
|
if(! d.ws.open_)
|
||||||
{
|
{
|
||||||
ec = boost::asio::error::operation_aborted;
|
ec = boost::asio::error::operation_aborted;
|
||||||
goto upcall;
|
goto upcall;
|
||||||
@@ -242,7 +242,7 @@ operator()(error_code ec, std::size_t bytes_transferred)
|
|||||||
std::move(*this));
|
std::move(*this));
|
||||||
if(ec)
|
if(ec)
|
||||||
{
|
{
|
||||||
d.ws.failed_ = true;
|
d.ws.open_ = false;
|
||||||
goto upcall;
|
goto upcall;
|
||||||
}
|
}
|
||||||
d.ws.rd_.buf.commit(bytes_transferred);
|
d.ws.rd_.buf.commit(bytes_transferred);
|
||||||
@@ -285,7 +285,7 @@ operator()(error_code ec, std::size_t bytes_transferred)
|
|||||||
std::move(*this));
|
std::move(*this));
|
||||||
if(ec)
|
if(ec)
|
||||||
{
|
{
|
||||||
d.ws.failed_ = true;
|
d.ws.open_ = false;
|
||||||
goto upcall;
|
goto upcall;
|
||||||
}
|
}
|
||||||
d.ws.rd_.buf.commit(bytes_transferred);
|
d.ws.rd_.buf.commit(bytes_transferred);
|
||||||
@@ -312,7 +312,7 @@ operator()(error_code ec, std::size_t bytes_transferred)
|
|||||||
}
|
}
|
||||||
if(! ec)
|
if(! ec)
|
||||||
ec = d.ev;
|
ec = d.ev;
|
||||||
d.ws.failed_ = true;
|
d.ws.open_ = false;
|
||||||
|
|
||||||
upcall:
|
upcall:
|
||||||
BOOST_ASSERT(d.ws.wr_block_ == d.tok);
|
BOOST_ASSERT(d.ws.wr_block_ == d.tok);
|
||||||
@@ -354,7 +354,7 @@ close(close_reason const& cr, error_code& ec)
|
|||||||
"SyncStream requirements not met");
|
"SyncStream requirements not met");
|
||||||
using beast::detail::clamp;
|
using beast::detail::clamp;
|
||||||
// Make sure the stream is open
|
// Make sure the stream is open
|
||||||
if(failed_)
|
if(! open_)
|
||||||
{
|
{
|
||||||
ec = boost::asio::error::operation_aborted;
|
ec = boost::asio::error::operation_aborted;
|
||||||
return;
|
return;
|
||||||
@@ -368,8 +368,8 @@ close(close_reason const& cr, error_code& ec)
|
|||||||
write_close<flat_static_buffer_base>(fb, cr);
|
write_close<flat_static_buffer_base>(fb, cr);
|
||||||
boost::asio::write(stream_, fb.data(), ec);
|
boost::asio::write(stream_, fb.data(), ec);
|
||||||
}
|
}
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return;
|
return;
|
||||||
// Drain the connection
|
// Drain the connection
|
||||||
close_code code{};
|
close_code code{};
|
||||||
@@ -387,8 +387,8 @@ close(close_reason const& cr, error_code& ec)
|
|||||||
stream_.read_some(
|
stream_.read_some(
|
||||||
rd_.buf.prepare(read_size(rd_.buf,
|
rd_.buf.prepare(read_size(rd_.buf,
|
||||||
rd_.buf.max_size())), ec);
|
rd_.buf.max_size())), ec);
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return;
|
return;
|
||||||
rd_.buf.commit(bytes_transferred);
|
rd_.buf.commit(bytes_transferred);
|
||||||
}
|
}
|
||||||
@@ -425,8 +425,8 @@ close(close_reason const& cr, error_code& ec)
|
|||||||
stream_.read_some(
|
stream_.read_some(
|
||||||
rd_.buf.prepare(read_size(rd_.buf,
|
rd_.buf.prepare(read_size(rd_.buf,
|
||||||
rd_.buf.max_size())), ec);
|
rd_.buf.max_size())), ec);
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return;
|
return;
|
||||||
rd_.buf.commit(bytes_transferred);
|
rd_.buf.commit(bytes_transferred);
|
||||||
}
|
}
|
||||||
|
@@ -136,7 +136,7 @@ operator()(error_code ec, std::size_t)
|
|||||||
d.ws.wr_block_ = d.tok;
|
d.ws.wr_block_ = d.tok;
|
||||||
|
|
||||||
// Make sure the stream is open
|
// Make sure the stream is open
|
||||||
if(d.ws.failed_)
|
if(! d.ws.open_)
|
||||||
{
|
{
|
||||||
BOOST_ASIO_CORO_YIELD
|
BOOST_ASIO_CORO_YIELD
|
||||||
d.ws.get_io_service().post(
|
d.ws.get_io_service().post(
|
||||||
@@ -162,7 +162,7 @@ operator()(error_code ec, std::size_t)
|
|||||||
BOOST_ASSERT(d.ws.wr_block_ == d.tok);
|
BOOST_ASSERT(d.ws.wr_block_ == d.tok);
|
||||||
|
|
||||||
// Make sure the stream is open
|
// Make sure the stream is open
|
||||||
if(d.ws.failed_)
|
if(! d.ws.open_)
|
||||||
{
|
{
|
||||||
ec = boost::asio::error::operation_aborted;
|
ec = boost::asio::error::operation_aborted;
|
||||||
goto upcall;
|
goto upcall;
|
||||||
@@ -180,8 +180,8 @@ operator()(error_code ec, std::size_t)
|
|||||||
d.ws.stream_, d.fb.data(),
|
d.ws.stream_, d.fb.data(),
|
||||||
std::move(*this));
|
std::move(*this));
|
||||||
BOOST_ASSERT(d.ws.wr_block_ == d.tok);
|
BOOST_ASSERT(d.ws.wr_block_ == d.tok);
|
||||||
d.ws.failed_ = !!ec;
|
d.ws.open_ = ! ec;
|
||||||
if(d.ws.failed_)
|
if(! d.ws.open_)
|
||||||
goto upcall;
|
goto upcall;
|
||||||
}
|
}
|
||||||
// Teardown
|
// Teardown
|
||||||
@@ -199,7 +199,7 @@ operator()(error_code ec, std::size_t)
|
|||||||
}
|
}
|
||||||
if(! ec)
|
if(! ec)
|
||||||
ec = d.ev;
|
ec = d.ev;
|
||||||
d.ws.failed_ = true;
|
d.ws.open_ = false;
|
||||||
upcall:
|
upcall:
|
||||||
if(d.ws.wr_block_ == d.tok)
|
if(d.ws.wr_block_ == d.tok)
|
||||||
d.ws.wr_block_.reset();
|
d.ws.wr_block_.reset();
|
||||||
@@ -227,8 +227,8 @@ do_fail(
|
|||||||
write_close<
|
write_close<
|
||||||
flat_static_buffer_base>(fb, code);
|
flat_static_buffer_base>(fb, code);
|
||||||
boost::asio::write(stream_, fb.data(), ec);
|
boost::asio::write(stream_, fb.data(), ec);
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
using beast::websocket::teardown;
|
using beast::websocket::teardown;
|
||||||
@@ -239,11 +239,11 @@ do_fail(
|
|||||||
// http://stackoverflow.com/questions/25587403/boost-asio-ssl-async-shutdown-always-finishes-with-an-error
|
// http://stackoverflow.com/questions/25587403/boost-asio-ssl-async-shutdown-always-finishes-with-an-error
|
||||||
ec.assign(0, ec.category());
|
ec.assign(0, ec.category());
|
||||||
}
|
}
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return;
|
return;
|
||||||
ec = ev;
|
ec = ev;
|
||||||
failed_ = true;
|
open_ = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* _Fail the WebSocket Connection_
|
/* _Fail the WebSocket Connection_
|
||||||
|
@@ -131,7 +131,7 @@ operator()(error_code ec, std::size_t)
|
|||||||
d.ws.wr_block_ = d.tok;
|
d.ws.wr_block_ = d.tok;
|
||||||
|
|
||||||
// Make sure the stream is open
|
// Make sure the stream is open
|
||||||
if(d.ws.failed_)
|
if(! d.ws.open_)
|
||||||
{
|
{
|
||||||
BOOST_ASIO_CORO_YIELD
|
BOOST_ASIO_CORO_YIELD
|
||||||
d.ws.get_io_service().post(
|
d.ws.get_io_service().post(
|
||||||
@@ -157,7 +157,7 @@ operator()(error_code ec, std::size_t)
|
|||||||
BOOST_ASSERT(d.ws.wr_block_ == d.tok);
|
BOOST_ASSERT(d.ws.wr_block_ == d.tok);
|
||||||
|
|
||||||
// Make sure the stream is open
|
// Make sure the stream is open
|
||||||
if(d.ws.failed_)
|
if(! d.ws.open_)
|
||||||
{
|
{
|
||||||
ec = boost::asio::error::operation_aborted;
|
ec = boost::asio::error::operation_aborted;
|
||||||
goto upcall;
|
goto upcall;
|
||||||
@@ -169,7 +169,7 @@ operator()(error_code ec, std::size_t)
|
|||||||
boost::asio::async_write(d.ws.stream_,
|
boost::asio::async_write(d.ws.stream_,
|
||||||
d.fb.data(), std::move(*this));
|
d.fb.data(), std::move(*this));
|
||||||
if(ec)
|
if(ec)
|
||||||
d.ws.failed_ = true;
|
d.ws.open_ = false;
|
||||||
|
|
||||||
upcall:
|
upcall:
|
||||||
BOOST_ASSERT(d.ws.wr_block_ == d.tok);
|
BOOST_ASSERT(d.ws.wr_block_ == d.tok);
|
||||||
@@ -200,7 +200,7 @@ stream<NextLayer>::
|
|||||||
ping(ping_data const& payload, error_code& ec)
|
ping(ping_data const& payload, error_code& ec)
|
||||||
{
|
{
|
||||||
// Make sure the stream is open
|
// Make sure the stream is open
|
||||||
if(failed_)
|
if(! open_)
|
||||||
{
|
{
|
||||||
ec = boost::asio::error::operation_aborted;
|
ec = boost::asio::error::operation_aborted;
|
||||||
return;
|
return;
|
||||||
@@ -228,7 +228,7 @@ stream<NextLayer>::
|
|||||||
pong(ping_data const& payload, error_code& ec)
|
pong(ping_data const& payload, error_code& ec)
|
||||||
{
|
{
|
||||||
// Make sure the stream is open
|
// Make sure the stream is open
|
||||||
if(failed_)
|
if(! open_)
|
||||||
{
|
{
|
||||||
ec = boost::asio::error::operation_aborted;
|
ec = boost::asio::error::operation_aborted;
|
||||||
return;
|
return;
|
||||||
|
@@ -140,7 +140,7 @@ operator()(
|
|||||||
ws_.rd_block_ = tok_;
|
ws_.rd_block_ = tok_;
|
||||||
|
|
||||||
// Make sure the stream is open
|
// Make sure the stream is open
|
||||||
if(ws_.failed_)
|
if(! ws_.open_)
|
||||||
{
|
{
|
||||||
BOOST_ASIO_CORO_YIELD
|
BOOST_ASIO_CORO_YIELD
|
||||||
ws_.get_io_service().post(
|
ws_.get_io_service().post(
|
||||||
@@ -167,7 +167,7 @@ operator()(
|
|||||||
dispatched_ = true;
|
dispatched_ = true;
|
||||||
|
|
||||||
// Handle the stream closing while suspended
|
// Handle the stream closing while suspended
|
||||||
if(ws_.failed_)
|
if(! ws_.open_)
|
||||||
{
|
{
|
||||||
ec = boost::asio::error::operation_aborted;
|
ec = boost::asio::error::operation_aborted;
|
||||||
goto upcall;
|
goto upcall;
|
||||||
@@ -197,8 +197,8 @@ operator()(
|
|||||||
ws_.rd_.buf, ws_.rd_.buf.max_size())),
|
ws_.rd_.buf, ws_.rd_.buf.max_size())),
|
||||||
std::move(*this));
|
std::move(*this));
|
||||||
dispatched_ = true;
|
dispatched_ = true;
|
||||||
ws_.failed_ = !!ec;
|
ws_.open_ = ! ec;
|
||||||
if(ws_.failed_)
|
if(! ws_.open_)
|
||||||
goto upcall;
|
goto upcall;
|
||||||
ws_.rd_.buf.commit(bytes_transferred);
|
ws_.rd_.buf.commit(bytes_transferred);
|
||||||
}
|
}
|
||||||
@@ -261,7 +261,7 @@ operator()(
|
|||||||
dispatched_ = true;
|
dispatched_ = true;
|
||||||
|
|
||||||
// Make sure the stream is open
|
// Make sure the stream is open
|
||||||
if(ws_.failed_)
|
if(! ws_.open_)
|
||||||
{
|
{
|
||||||
ws_.wr_block_.reset();
|
ws_.wr_block_.reset();
|
||||||
ec = boost::asio::error::operation_aborted;
|
ec = boost::asio::error::operation_aborted;
|
||||||
@@ -284,8 +284,8 @@ operator()(
|
|||||||
BOOST_ASSERT(ws_.wr_block_ == tok_);
|
BOOST_ASSERT(ws_.wr_block_ == tok_);
|
||||||
dispatched_ = true;
|
dispatched_ = true;
|
||||||
ws_.wr_block_.reset();
|
ws_.wr_block_.reset();
|
||||||
ws_.failed_ = !!ec;
|
ws_.open_ = ! ec;
|
||||||
if(ws_.failed_)
|
if(! ws_.open_)
|
||||||
goto upcall;
|
goto upcall;
|
||||||
goto loop;
|
goto loop;
|
||||||
}
|
}
|
||||||
@@ -365,8 +365,8 @@ operator()(
|
|||||||
ws_.rd_.buf, ws_.rd_.buf.max_size())),
|
ws_.rd_.buf, ws_.rd_.buf.max_size())),
|
||||||
std::move(*this));
|
std::move(*this));
|
||||||
dispatched_ = true;
|
dispatched_ = true;
|
||||||
ws_.failed_ = !!ec;
|
ws_.open_ = ! ec;
|
||||||
if(ws_.failed_)
|
if(! ws_.open_)
|
||||||
goto upcall;
|
goto upcall;
|
||||||
ws_.rd_.buf.commit(bytes_transferred);
|
ws_.rd_.buf.commit(bytes_transferred);
|
||||||
if(ws_.rd_.fh.mask)
|
if(ws_.rd_.fh.mask)
|
||||||
@@ -408,8 +408,8 @@ operator()(
|
|||||||
ws_.stream_.async_read_some(buffer_prefix(
|
ws_.stream_.async_read_some(buffer_prefix(
|
||||||
clamp(ws_.rd_.remain), cb_), std::move(*this));
|
clamp(ws_.rd_.remain), cb_), std::move(*this));
|
||||||
dispatched_ = true;
|
dispatched_ = true;
|
||||||
ws_.failed_ = !!ec;
|
ws_.open_ = ! ec;
|
||||||
if(ws_.failed_)
|
if(! ws_.open_)
|
||||||
goto upcall;
|
goto upcall;
|
||||||
BOOST_ASSERT(bytes_transferred > 0);
|
BOOST_ASSERT(bytes_transferred > 0);
|
||||||
auto const mb = buffer_prefix(
|
auto const mb = buffer_prefix(
|
||||||
@@ -453,8 +453,8 @@ operator()(
|
|||||||
ws_.rd_.buf.prepare(read_size(
|
ws_.rd_.buf.prepare(read_size(
|
||||||
ws_.rd_.buf, ws_.rd_.buf.max_size())),
|
ws_.rd_.buf, ws_.rd_.buf.max_size())),
|
||||||
std::move(*this));
|
std::move(*this));
|
||||||
ws_.failed_ = !!ec;
|
ws_.open_ = ! ec;
|
||||||
if(ws_.failed_)
|
if(! ws_.open_)
|
||||||
goto upcall;
|
goto upcall;
|
||||||
BOOST_ASSERT(bytes_transferred > 0);
|
BOOST_ASSERT(bytes_transferred > 0);
|
||||||
ws_.rd_.buf.commit(bytes_transferred);
|
ws_.rd_.buf.commit(bytes_transferred);
|
||||||
@@ -497,8 +497,8 @@ operator()(
|
|||||||
zs.avail_in = sizeof(empty_block);
|
zs.avail_in = sizeof(empty_block);
|
||||||
ws_.pmd_->zi.write(zs, zlib::Flush::sync, ec);
|
ws_.pmd_->zi.write(zs, zlib::Flush::sync, ec);
|
||||||
BOOST_ASSERT(! ec);
|
BOOST_ASSERT(! ec);
|
||||||
ws_.failed_ = !!ec;
|
ws_.open_ = ! ec;
|
||||||
if(ws_.failed_)
|
if(! ws_.open_)
|
||||||
break;
|
break;
|
||||||
// VFALCO See:
|
// VFALCO See:
|
||||||
// https://github.com/madler/zlib/issues/280
|
// https://github.com/madler/zlib/issues/280
|
||||||
@@ -521,8 +521,8 @@ operator()(
|
|||||||
}
|
}
|
||||||
ws_.pmd_->zi.write(zs, zlib::Flush::sync, ec);
|
ws_.pmd_->zi.write(zs, zlib::Flush::sync, ec);
|
||||||
BOOST_ASSERT(ec != zlib::error::end_of_stream);
|
BOOST_ASSERT(ec != zlib::error::end_of_stream);
|
||||||
ws_.failed_ = !!ec;
|
ws_.open_ = ! ec;
|
||||||
if(ws_.failed_)
|
if(! ws_.open_)
|
||||||
break;
|
break;
|
||||||
if(ws_.rd_msg_max_ && beast::detail::sum_exceeds(
|
if(ws_.rd_msg_max_ && beast::detail::sum_exceeds(
|
||||||
ws_.rd_.size, zs.total_out, ws_.rd_msg_max_))
|
ws_.rd_.size, zs.total_out, ws_.rd_msg_max_))
|
||||||
@@ -893,7 +893,7 @@ read_some(
|
|||||||
close_code code{};
|
close_code code{};
|
||||||
std::size_t bytes_written = 0;
|
std::size_t bytes_written = 0;
|
||||||
// Make sure the stream is open
|
// Make sure the stream is open
|
||||||
if(failed_)
|
if(! open_)
|
||||||
{
|
{
|
||||||
ec = boost::asio::error::operation_aborted;
|
ec = boost::asio::error::operation_aborted;
|
||||||
return 0;
|
return 0;
|
||||||
@@ -919,8 +919,8 @@ loop:
|
|||||||
rd_.buf.prepare(read_size(
|
rd_.buf.prepare(read_size(
|
||||||
rd_.buf, rd_.buf.max_size())),
|
rd_.buf, rd_.buf.max_size())),
|
||||||
ec);
|
ec);
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return bytes_written;
|
return bytes_written;
|
||||||
rd_.buf.commit(bytes_transferred);
|
rd_.buf.commit(bytes_transferred);
|
||||||
}
|
}
|
||||||
@@ -959,8 +959,8 @@ loop:
|
|||||||
write_ping<flat_static_buffer_base>(fb,
|
write_ping<flat_static_buffer_base>(fb,
|
||||||
detail::opcode::pong, payload);
|
detail::opcode::pong, payload);
|
||||||
boost::asio::write(stream_, fb.data(), ec);
|
boost::asio::write(stream_, fb.data(), ec);
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return bytes_written;
|
return bytes_written;
|
||||||
goto loop;
|
goto loop;
|
||||||
}
|
}
|
||||||
@@ -1024,8 +1024,8 @@ loop:
|
|||||||
rd_.buf.commit(stream_.read_some(
|
rd_.buf.commit(stream_.read_some(
|
||||||
rd_.buf.prepare(read_size(rd_.buf,
|
rd_.buf.prepare(read_size(rd_.buf,
|
||||||
rd_.buf.max_size())), ec));
|
rd_.buf.max_size())), ec));
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return bytes_written;
|
return bytes_written;
|
||||||
if(rd_.fh.mask)
|
if(rd_.fh.mask)
|
||||||
detail::mask_inplace(
|
detail::mask_inplace(
|
||||||
@@ -1068,8 +1068,8 @@ loop:
|
|||||||
auto const bytes_transferred =
|
auto const bytes_transferred =
|
||||||
stream_.read_some(buffer_prefix(
|
stream_.read_some(buffer_prefix(
|
||||||
clamp(rd_.remain), buffers), ec);
|
clamp(rd_.remain), buffers), ec);
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return bytes_written;
|
return bytes_written;
|
||||||
BOOST_ASSERT(bytes_transferred > 0);
|
BOOST_ASSERT(bytes_transferred > 0);
|
||||||
auto const mb = buffer_prefix(
|
auto const mb = buffer_prefix(
|
||||||
@@ -1131,8 +1131,8 @@ loop:
|
|||||||
rd_.buf.prepare(read_size(
|
rd_.buf.prepare(read_size(
|
||||||
rd_.buf, rd_.buf.max_size())),
|
rd_.buf, rd_.buf.max_size())),
|
||||||
ec);
|
ec);
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return bytes_written;
|
return bytes_written;
|
||||||
BOOST_ASSERT(bytes_transferred > 0);
|
BOOST_ASSERT(bytes_transferred > 0);
|
||||||
rd_.buf.commit(bytes_transferred);
|
rd_.buf.commit(bytes_transferred);
|
||||||
@@ -1162,8 +1162,8 @@ loop:
|
|||||||
zs.avail_in = sizeof(empty_block);
|
zs.avail_in = sizeof(empty_block);
|
||||||
pmd_->zi.write(zs, zlib::Flush::sync, ec);
|
pmd_->zi.write(zs, zlib::Flush::sync, ec);
|
||||||
BOOST_ASSERT(! ec);
|
BOOST_ASSERT(! ec);
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return bytes_written;
|
return bytes_written;
|
||||||
// VFALCO See:
|
// VFALCO See:
|
||||||
// https://github.com/madler/zlib/issues/280
|
// https://github.com/madler/zlib/issues/280
|
||||||
@@ -1186,8 +1186,8 @@ loop:
|
|||||||
}
|
}
|
||||||
pmd_->zi.write(zs, zlib::Flush::sync, ec);
|
pmd_->zi.write(zs, zlib::Flush::sync, ec);
|
||||||
BOOST_ASSERT(ec != zlib::error::end_of_stream);
|
BOOST_ASSERT(ec != zlib::error::end_of_stream);
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return bytes_written;
|
return bytes_written;
|
||||||
if(rd_msg_max_ && beast::detail::sum_exceeds(
|
if(rd_msg_max_ && beast::detail::sum_exceeds(
|
||||||
rd_.size, zs.total_out, rd_msg_max_))
|
rd_.size, zs.total_out, rd_msg_max_))
|
||||||
|
@@ -134,7 +134,7 @@ open(role_type role)
|
|||||||
{
|
{
|
||||||
// VFALCO TODO analyze and remove dupe code in reset()
|
// VFALCO TODO analyze and remove dupe code in reset()
|
||||||
role_ = role;
|
role_ = role;
|
||||||
failed_ = false;
|
open_ = true;
|
||||||
rd_.remain = 0;
|
rd_.remain = 0;
|
||||||
rd_.cont = false;
|
rd_.cont = false;
|
||||||
rd_.done = true;
|
rd_.done = true;
|
||||||
@@ -194,7 +194,8 @@ void
|
|||||||
stream<NextLayer>::
|
stream<NextLayer>::
|
||||||
reset()
|
reset()
|
||||||
{
|
{
|
||||||
failed_ = false;
|
BOOST_ASSERT(! open_);
|
||||||
|
open_ = false; // VFALCO is this needed?
|
||||||
rd_.remain = 0;
|
rd_.remain = 0;
|
||||||
rd_.cont = false;
|
rd_.cont = false;
|
||||||
rd_.done = true;
|
rd_.done = true;
|
||||||
|
@@ -211,7 +211,7 @@ operator()(error_code ec,
|
|||||||
ws_.wr_block_ = tok_;
|
ws_.wr_block_ = tok_;
|
||||||
|
|
||||||
// Make sure the stream is open
|
// Make sure the stream is open
|
||||||
if(ws_.failed_)
|
if(! ws_.open_)
|
||||||
{
|
{
|
||||||
BOOST_ASIO_CORO_YIELD
|
BOOST_ASIO_CORO_YIELD
|
||||||
ws_.get_io_service().post(
|
ws_.get_io_service().post(
|
||||||
@@ -237,7 +237,7 @@ operator()(error_code ec,
|
|||||||
BOOST_ASSERT(ws_.wr_block_ == tok_);
|
BOOST_ASSERT(ws_.wr_block_ == tok_);
|
||||||
|
|
||||||
// Make sure the stream is open
|
// Make sure the stream is open
|
||||||
if(ws_.failed_)
|
if(! ws_.open_)
|
||||||
{
|
{
|
||||||
ec = boost::asio::error::operation_aborted;
|
ec = boost::asio::error::operation_aborted;
|
||||||
goto upcall;
|
goto upcall;
|
||||||
@@ -262,7 +262,7 @@ operator()(error_code ec,
|
|||||||
std::move(*this));
|
std::move(*this));
|
||||||
BOOST_ASSERT(ws_.wr_block_ == tok_);
|
BOOST_ASSERT(ws_.wr_block_ == tok_);
|
||||||
if(ec)
|
if(ec)
|
||||||
ws_.failed_ = true;
|
ws_.open_ = false;
|
||||||
goto upcall;
|
goto upcall;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -290,7 +290,7 @@ operator()(error_code ec,
|
|||||||
BOOST_ASSERT(ws_.wr_block_ == tok_);
|
BOOST_ASSERT(ws_.wr_block_ == tok_);
|
||||||
if(ec)
|
if(ec)
|
||||||
{
|
{
|
||||||
ws_.failed_ = true;
|
ws_.open_ = false;
|
||||||
goto upcall;
|
goto upcall;
|
||||||
}
|
}
|
||||||
if(remain_ == 0)
|
if(remain_ == 0)
|
||||||
@@ -343,7 +343,7 @@ operator()(error_code ec,
|
|||||||
BOOST_ASSERT(ws_.wr_block_ == tok_);
|
BOOST_ASSERT(ws_.wr_block_ == tok_);
|
||||||
if(ec)
|
if(ec)
|
||||||
{
|
{
|
||||||
ws_.failed_ = true;
|
ws_.open_ = false;
|
||||||
goto upcall;
|
goto upcall;
|
||||||
}
|
}
|
||||||
while(remain_ > 0)
|
while(remain_ > 0)
|
||||||
@@ -364,7 +364,7 @@ operator()(error_code ec,
|
|||||||
BOOST_ASSERT(ws_.wr_block_ == tok_);
|
BOOST_ASSERT(ws_.wr_block_ == tok_);
|
||||||
if(ec)
|
if(ec)
|
||||||
{
|
{
|
||||||
ws_.failed_ = true;
|
ws_.open_ = false;
|
||||||
goto upcall;
|
goto upcall;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -401,7 +401,7 @@ operator()(error_code ec,
|
|||||||
BOOST_ASSERT(ws_.wr_block_ == tok_);
|
BOOST_ASSERT(ws_.wr_block_ == tok_);
|
||||||
if(ec)
|
if(ec)
|
||||||
{
|
{
|
||||||
ws_.failed_ = true;
|
ws_.open_ = false;
|
||||||
goto upcall;
|
goto upcall;
|
||||||
}
|
}
|
||||||
if(remain_ == 0)
|
if(remain_ == 0)
|
||||||
@@ -435,8 +435,8 @@ operator()(error_code ec,
|
|||||||
ws_.wr_.buf_size);
|
ws_.wr_.buf_size);
|
||||||
more_ = detail::deflate(
|
more_ = detail::deflate(
|
||||||
ws_.pmd_->zo, b, cb_, fin_, ec);
|
ws_.pmd_->zo, b, cb_, fin_, ec);
|
||||||
ws_.failed_ = !!ec;
|
ws_.open_ = ! ec;
|
||||||
if(ws_.failed_)
|
if(! ws_.open_)
|
||||||
{
|
{
|
||||||
// Always dispatching is easiest
|
// Always dispatching is easiest
|
||||||
BOOST_ASIO_CORO_YIELD
|
BOOST_ASIO_CORO_YIELD
|
||||||
@@ -484,7 +484,7 @@ operator()(error_code ec,
|
|||||||
BOOST_ASSERT(ws_.wr_block_ == tok_);
|
BOOST_ASSERT(ws_.wr_block_ == tok_);
|
||||||
if(ec)
|
if(ec)
|
||||||
{
|
{
|
||||||
ws_.failed_ = true;
|
ws_.open_ = false;
|
||||||
goto upcall;
|
goto upcall;
|
||||||
}
|
}
|
||||||
if(more_)
|
if(more_)
|
||||||
@@ -567,7 +567,7 @@ write_some(bool fin,
|
|||||||
using boost::asio::buffer_copy;
|
using boost::asio::buffer_copy;
|
||||||
using boost::asio::buffer_size;
|
using boost::asio::buffer_size;
|
||||||
// Make sure the stream is open
|
// Make sure the stream is open
|
||||||
if(failed_)
|
if(! open_)
|
||||||
{
|
{
|
||||||
ec = boost::asio::error::operation_aborted;
|
ec = boost::asio::error::operation_aborted;
|
||||||
return;
|
return;
|
||||||
@@ -598,8 +598,8 @@ write_some(bool fin,
|
|||||||
wr_.buf.get(), wr_.buf_size);
|
wr_.buf.get(), wr_.buf_size);
|
||||||
auto const more = detail::deflate(
|
auto const more = detail::deflate(
|
||||||
pmd_->zo, b, cb, fin, ec);
|
pmd_->zo, b, cb, fin, ec);
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return;
|
return;
|
||||||
auto const n = buffer_size(b);
|
auto const n = buffer_size(b);
|
||||||
if(n == 0)
|
if(n == 0)
|
||||||
@@ -627,8 +627,8 @@ write_some(bool fin,
|
|||||||
wr_.cont = ! fin;
|
wr_.cont = ! fin;
|
||||||
boost::asio::write(stream_,
|
boost::asio::write(stream_,
|
||||||
buffer_cat(fh_buf.data(), b), ec);
|
buffer_cat(fh_buf.data(), b), ec);
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return;
|
return;
|
||||||
if(! more)
|
if(! more)
|
||||||
break;
|
break;
|
||||||
@@ -656,8 +656,8 @@ write_some(bool fin,
|
|||||||
wr_.cont = ! fin;
|
wr_.cont = ! fin;
|
||||||
boost::asio::write(stream_,
|
boost::asio::write(stream_,
|
||||||
buffer_cat(fh_buf.data(), buffers), ec);
|
buffer_cat(fh_buf.data(), buffers), ec);
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -679,8 +679,8 @@ write_some(bool fin,
|
|||||||
boost::asio::write(stream_,
|
boost::asio::write(stream_,
|
||||||
buffer_cat(fh_buf.data(),
|
buffer_cat(fh_buf.data(),
|
||||||
buffer_prefix(n, cb)), ec);
|
buffer_prefix(n, cb)), ec);
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return;
|
return;
|
||||||
if(remain == 0)
|
if(remain == 0)
|
||||||
break;
|
break;
|
||||||
@@ -713,8 +713,8 @@ write_some(bool fin,
|
|||||||
wr_.cont = ! fin;
|
wr_.cont = ! fin;
|
||||||
boost::asio::write(stream_,
|
boost::asio::write(stream_,
|
||||||
buffer_cat(fh_buf.data(), b), ec);
|
buffer_cat(fh_buf.data(), b), ec);
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
while(remain > 0)
|
while(remain > 0)
|
||||||
@@ -726,8 +726,8 @@ write_some(bool fin,
|
|||||||
remain -= n;
|
remain -= n;
|
||||||
detail::mask_inplace(b, key);
|
detail::mask_inplace(b, key);
|
||||||
boost::asio::write(stream_, b, ec);
|
boost::asio::write(stream_, b, ec);
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@@ -755,8 +755,8 @@ write_some(bool fin,
|
|||||||
flat_static_buffer_base>(fh_buf, fh);
|
flat_static_buffer_base>(fh_buf, fh);
|
||||||
boost::asio::write(stream_,
|
boost::asio::write(stream_,
|
||||||
buffer_cat(fh_buf.data(), b), ec);
|
buffer_cat(fh_buf.data(), b), ec);
|
||||||
failed_ = !!ec;
|
open_ = ! ec;
|
||||||
if(failed_)
|
if(! open_)
|
||||||
return;
|
return;
|
||||||
if(remain == 0)
|
if(remain == 0)
|
||||||
break;
|
break;
|
||||||
|
@@ -228,7 +228,7 @@ class stream
|
|||||||
detail::opcode::text; // outgoing message type
|
detail::opcode::text; // outgoing message type
|
||||||
control_cb_type ctrl_cb_; // control callback
|
control_cb_type ctrl_cb_; // control callback
|
||||||
role_type role_; // server or client
|
role_type role_; // server or client
|
||||||
bool failed_ = true; // the connection failed
|
bool open_ = false; // `true` if established
|
||||||
|
|
||||||
bool rd_close_; // read close frame
|
bool rd_close_; // read close frame
|
||||||
bool wr_close_; // sent close frame
|
bool wr_close_; // sent close frame
|
||||||
|
Reference in New Issue
Block a user