Partial writes don't cause bytes_transferred underflow

Fixes #2880
This commit is contained in:
Mohammad Nejati
2024-06-06 17:58:25 +03:30
committed by Mohammad Nejati
parent 767397e0c1
commit 74d28c030d
2 changed files with 35 additions and 3 deletions
+6 -3
View File
@@ -346,8 +346,8 @@ operator()(
beast::detail::bind_continuation(std::move(*this)));
}
// VFALCO What about consuming the buffer on error?
bytes_transferred_ +=
bytes_transferred - impl.wr_fb.size();
if(bytes_transferred > impl.wr_fb.size())
bytes_transferred_ += bytes_transferred - impl.wr_fb.size();
if(impl.check_stop_now(ec))
goto upcall;
while(remain_ > 0)
@@ -431,7 +431,10 @@ operator()(
),
beast::detail::bind_continuation(std::move(*this)));
}
n = bytes_transferred - impl.wr_fb.size();
if(bytes_transferred > impl.wr_fb.size())
n = bytes_transferred - impl.wr_fb.size();
else
n = 0;
bytes_transferred_ += n;
if(impl.check_stop_now(ec))
goto upcall;