@@ -44,6 +44,7 @@ using namespace trantor;
4444#define ECONNRESET WSAECONNRESET
4545#endif
4646
47+ static const int kMaxSendFileBufferSize = 16 * 1024 ;
4748TcpConnectionImpl::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