mirror of
https://github.com/boostorg/beast.git
synced 2025-08-02 06:15:24 +02:00
Fix done state for WebSocket reads
This commit is contained in:
@@ -1,3 +1,11 @@
|
||||
Version 107:
|
||||
|
||||
WebSocket
|
||||
|
||||
* Fix done state for WebSocket reads
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Version 106:
|
||||
|
||||
* Dynamic buffer input areas are mutable
|
||||
|
@@ -346,11 +346,12 @@ operator()(
|
||||
// Empty non-final frame
|
||||
goto loop;
|
||||
}
|
||||
ws_.rd_.done = ws_.rd_.remain == 0 && ws_.rd_.fh.fin;
|
||||
if(ws_.rd_.done)
|
||||
goto upcall; // Empty final frame
|
||||
ws_.rd_.done = false;
|
||||
}
|
||||
if(! ws_.pmd_ || ! ws_.pmd_->rd_set)
|
||||
{
|
||||
// Check for empty final frame
|
||||
if(ws_.rd_.remain > 0 || ! ws_.rd_.fh.fin)
|
||||
{
|
||||
if(ws_.rd_.buf.size() == 0 && ws_.rd_.buf.max_size() >
|
||||
(std::min)(clamp(ws_.rd_.remain),
|
||||
@@ -431,8 +432,8 @@ operator()(
|
||||
bytes_written_ += bytes_transferred;
|
||||
ws_.rd_.size += bytes_transferred;
|
||||
}
|
||||
ws_.rd_.done =
|
||||
ws_.rd_.remain == 0 && ws_.rd_.fh.fin;
|
||||
}
|
||||
ws_.rd_.done = ws_.rd_.remain == 0 && ws_.rd_.fh.fin;
|
||||
goto upcall;
|
||||
}
|
||||
else
|
||||
@@ -1033,15 +1034,16 @@ loop:
|
||||
// Empty non-final frame
|
||||
goto loop;
|
||||
}
|
||||
rd_.done = rd_.remain == 0 && rd_.fh.fin;
|
||||
rd_.done = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
ec.assign(0, ec.category());
|
||||
}
|
||||
if( ! rd_.done)
|
||||
{
|
||||
if(! pmd_ || ! pmd_->rd_set)
|
||||
{
|
||||
// Check for empty final frame
|
||||
if(rd_.remain > 0 || ! rd_.fh.fin)
|
||||
{
|
||||
if(rd_.buf.size() == 0 && rd_.buf.max_size() >
|
||||
(std::min)(clamp(rd_.remain),
|
||||
@@ -1122,6 +1124,7 @@ loop:
|
||||
bytes_written += bytes_transferred;
|
||||
rd_.size += bytes_transferred;
|
||||
}
|
||||
}
|
||||
rd_.done = rd_.remain == 0 && rd_.fh.fin;
|
||||
}
|
||||
else
|
||||
@@ -1250,7 +1253,6 @@ loop:
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return bytes_written;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user