Skip to content

Commit c08d8d7

Browse files
authored
Fix an error when sending files (#286)
1 parent 605893d commit c08d8d7

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

trantor/net/inner/TcpConnectionImpl.cc

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ using namespace trantor;
4444
#define ECONNRESET WSAECONNRESET
4545
#endif
4646

47+
static const int kMaxSendFileBufferSize = 16 * 1024;
4748
TcpConnectionImpl::TcpConnectionImpl(EventLoop *loop,
4849
int socketfd,
4950
const InetAddress &localAddr,
@@ -1038,7 +1039,7 @@ void TcpConnectionImpl::sendFileInLoop(const BufferNodePtr &filePtr)
10381039
if (!fileBufferPtr_)
10391040
{
10401041
fileBufferPtr_ = std::make_unique<std::vector<char>>();
1041-
fileBufferPtr_->reserve(16 * 1024);
1042+
fileBufferPtr_->reserve(kMaxSendFileBufferSize);
10421043
}
10431044
while ((filePtr->fileBytesToSend_ > 0) || !fileBufferPtr_->empty())
10441045
{
@@ -1047,7 +1048,7 @@ void TcpConnectionImpl::sendFileInLoop(const BufferNodePtr &filePtr)
10471048
{
10481049
// LOG_TRACE << "send stream in loop: fetch data
10491050
// on buffer empty";
1050-
fileBufferPtr_->resize(16 * 1024);
1051+
fileBufferPtr_->resize(kMaxSendFileBufferSize);
10511052
std::size_t nData;
10521053
nData = filePtr->streamCallback_(fileBufferPtr_->data(),
10531054
fileBufferPtr_->size());
@@ -1129,7 +1130,12 @@ void TcpConnectionImpl::sendFileInLoop(const BufferNodePtr &filePtr)
11291130
LOG_TRACE << "send file in loop";
11301131
if (!fileBufferPtr_)
11311132
{
1132-
fileBufferPtr_ = std::make_unique<std::vector<char>>(16 * 1024);
1133+
fileBufferPtr_ =
1134+
std::make_unique<std::vector<char>>(kMaxSendFileBufferSize);
1135+
}
1136+
if (fileBufferPtr_->size() < kMaxSendFileBufferSize)
1137+
{
1138+
fileBufferPtr_->resize(kMaxSendFileBufferSize);
11331139
}
11341140
#ifndef _WIN32
11351141
lseek(filePtr->sendFd_, filePtr->offset_, SEEK_SET);

0 commit comments

Comments
 (0)