mirror of
https://github.com/boostorg/beast.git
synced 2025-07-30 12:57:31 +02:00
@ -1,3 +1,9 @@
|
||||
Version 90:
|
||||
|
||||
* Fix websocket read of zero length message
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Version 89:
|
||||
|
||||
* Fix CONTRIBUTING.md links
|
||||
|
@ -233,7 +233,8 @@ operator()(
|
||||
// Empty non-final frame
|
||||
goto go_loop;
|
||||
}
|
||||
ws_.rd_.done = false;
|
||||
ws_.rd_.done =
|
||||
ws_.rd_.remain == 0 && ws_.rd_.fh.fin;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -436,6 +437,8 @@ operator()(
|
||||
case do_maybe_fill:
|
||||
if(ec)
|
||||
break;
|
||||
if(ws_.rd_.done)
|
||||
break;
|
||||
dispatched_ = true;
|
||||
|
||||
go_maybe_fill:
|
||||
@ -495,6 +498,8 @@ operator()(
|
||||
}
|
||||
// Read into caller's buffer
|
||||
step_ = do_read;
|
||||
BOOST_ASSERT(ws_.rd_.remain > 0);
|
||||
BOOST_ASSERT(buffer_size(cb_) > 0);
|
||||
return ws_.stream_.async_read_some(buffer_prefix(
|
||||
clamp(ws_.rd_.remain), cb_), std::move(*this));
|
||||
|
||||
@ -526,8 +531,8 @@ operator()(
|
||||
}
|
||||
|
||||
go_done:
|
||||
if(ws_.rd_.remain == 0 && ws_.rd_.fh.fin)
|
||||
ws_.rd_.done = true;
|
||||
ws_.rd_.done =
|
||||
ws_.rd_.remain == 0 && ws_.rd_.fh.fin;
|
||||
break;
|
||||
|
||||
case do_inflate:
|
||||
@ -1087,12 +1092,14 @@ loop:
|
||||
// Empty non-final frame
|
||||
goto loop;
|
||||
}
|
||||
rd_.done = false;
|
||||
rd_.done = rd_.remain == 0 && rd_.fh.fin;
|
||||
}
|
||||
else
|
||||
{
|
||||
ec.assign(0, ec.category());
|
||||
}
|
||||
if( ! rd_.done)
|
||||
{
|
||||
if(! pmd_ || ! pmd_->rd_set)
|
||||
{
|
||||
if(rd_.buf.size() == 0 && rd_.buf.max_size() >
|
||||
@ -1140,6 +1147,8 @@ loop:
|
||||
else
|
||||
{
|
||||
// Read into caller's buffer
|
||||
BOOST_ASSERT(rd_.remain > 0);
|
||||
BOOST_ASSERT(buffer_size(buffers) > 0);
|
||||
auto const bytes_transferred =
|
||||
stream_.read_some(buffer_prefix(
|
||||
clamp(rd_.remain), buffers), ec);
|
||||
@ -1165,8 +1174,7 @@ loop:
|
||||
bytes_written += bytes_transferred;
|
||||
rd_.size += bytes_transferred;
|
||||
}
|
||||
if(rd_.remain == 0 && rd_.fh.fin)
|
||||
rd_.done = true;
|
||||
rd_.done = rd_.remain == 0 && rd_.fh.fin;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1287,6 +1295,7 @@ loop:
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return bytes_written;
|
||||
do_close:
|
||||
if(code != close_code::none)
|
||||
|
@ -1638,6 +1638,16 @@ public:
|
||||
}
|
||||
c.handshake(ws, "localhost", "/");
|
||||
|
||||
// send empty message
|
||||
ws.text(true);
|
||||
c.write(ws, boost::asio::null_buffers{});
|
||||
{
|
||||
// receive echoed message
|
||||
multi_buffer db;
|
||||
c.read(ws, db);
|
||||
BEAST_EXPECT(ws.got_text());
|
||||
BEAST_EXPECT(db.size() == 0);
|
||||
}
|
||||
// send message
|
||||
ws.auto_fragment(false);
|
||||
ws.binary(false);
|
||||
|
Reference in New Issue
Block a user