Skip to content

Commit 4b66320

Browse files
authored
Fix the error when sending partial files (#192)
1 parent e72a635 commit 4b66320

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

trantor/net/inner/TcpConnectionImpl.cc

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1513,7 +1513,9 @@ void TcpConnectionImpl::sendFileInLoop(const BufferNodePtr &filePtr)
15131513
{
15141514
auto n = read(filePtr->sendFd_,
15151515
&(*fileBufferPtr_)[0],
1516-
fileBufferPtr_->size());
1516+
std::min(fileBufferPtr_->size(),
1517+
static_cast<decltype(fileBufferPtr_->size())>(
1518+
filePtr->fileBytesToSend_)));
15171519
#else
15181520
_fseeki64(filePtr->sendFp_, filePtr->offset_, SEEK_SET);
15191521
if (!fileBufferPtr_)
@@ -1522,9 +1524,12 @@ void TcpConnectionImpl::sendFileInLoop(const BufferNodePtr &filePtr)
15221524
}
15231525
while (filePtr->fileBytesToSend_ > 0)
15241526
{
1527+
auto bytes = static_cast<decltype(fileBufferPtr_->size())>(
1528+
filePtr->fileBytesToSend_);
15251529
auto n = fread(&(*fileBufferPtr_)[0],
15261530
1,
1527-
fileBufferPtr_->size(),
1531+
(fileBufferPtr_->size() < bytes ? fileBufferPtr_->size()
1532+
: bytes),
15281533
filePtr->sendFp_);
15291534
#endif
15301535
if (n > 0)

0 commit comments

Comments
 (0)