mirror of
https://github.com/boostorg/beast.git
synced 2025-07-31 13:27:33 +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:
|
Version 106:
|
||||||
|
|
||||||
* Dynamic buffer input areas are mutable
|
* Dynamic buffer input areas are mutable
|
||||||
|
@ -346,11 +346,12 @@ operator()(
|
|||||||
// Empty non-final frame
|
// Empty non-final frame
|
||||||
goto loop;
|
goto loop;
|
||||||
}
|
}
|
||||||
ws_.rd_.done = ws_.rd_.remain == 0 && ws_.rd_.fh.fin;
|
ws_.rd_.done = false;
|
||||||
if(ws_.rd_.done)
|
|
||||||
goto upcall; // Empty final frame
|
|
||||||
}
|
}
|
||||||
if(! ws_.pmd_ || ! ws_.pmd_->rd_set)
|
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() >
|
if(ws_.rd_.buf.size() == 0 && ws_.rd_.buf.max_size() >
|
||||||
(std::min)(clamp(ws_.rd_.remain),
|
(std::min)(clamp(ws_.rd_.remain),
|
||||||
@ -431,8 +432,8 @@ operator()(
|
|||||||
bytes_written_ += bytes_transferred;
|
bytes_written_ += bytes_transferred;
|
||||||
ws_.rd_.size += 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;
|
goto upcall;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1033,15 +1034,16 @@ loop:
|
|||||||
// Empty non-final frame
|
// Empty non-final frame
|
||||||
goto loop;
|
goto loop;
|
||||||
}
|
}
|
||||||
rd_.done = rd_.remain == 0 && rd_.fh.fin;
|
rd_.done = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ec.assign(0, ec.category());
|
ec.assign(0, ec.category());
|
||||||
}
|
}
|
||||||
if( ! rd_.done)
|
|
||||||
{
|
|
||||||
if(! pmd_ || ! pmd_->rd_set)
|
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() >
|
if(rd_.buf.size() == 0 && rd_.buf.max_size() >
|
||||||
(std::min)(clamp(rd_.remain),
|
(std::min)(clamp(rd_.remain),
|
||||||
@ -1122,6 +1124,7 @@ loop:
|
|||||||
bytes_written += bytes_transferred;
|
bytes_written += bytes_transferred;
|
||||||
rd_.size += bytes_transferred;
|
rd_.size += bytes_transferred;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
rd_.done = rd_.remain == 0 && rd_.fh.fin;
|
rd_.done = rd_.remain == 0 && rd_.fh.fin;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1250,7 +1253,6 @@ loop:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return bytes_written;
|
return bytes_written;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user