@@ -44,6 +44,7 @@ using namespace trantor;
44
44
#define ECONNRESET WSAECONNRESET
45
45
#endif
46
46
47
+ static const int kMaxSendFileBufferSize = 16 * 1024 ;
47
48
TcpConnectionImpl::TcpConnectionImpl (EventLoop *loop,
48
49
int socketfd,
49
50
const InetAddress &localAddr,
@@ -1038,7 +1039,7 @@ void TcpConnectionImpl::sendFileInLoop(const BufferNodePtr &filePtr)
1038
1039
if (!fileBufferPtr_)
1039
1040
{
1040
1041
fileBufferPtr_ = std::make_unique<std::vector<char >>();
1041
- fileBufferPtr_->reserve (16 * 1024 );
1042
+ fileBufferPtr_->reserve (kMaxSendFileBufferSize );
1042
1043
}
1043
1044
while ((filePtr->fileBytesToSend_ > 0 ) || !fileBufferPtr_->empty ())
1044
1045
{
@@ -1047,7 +1048,7 @@ void TcpConnectionImpl::sendFileInLoop(const BufferNodePtr &filePtr)
1047
1048
{
1048
1049
// LOG_TRACE << "send stream in loop: fetch data
1049
1050
// on buffer empty";
1050
- fileBufferPtr_->resize (16 * 1024 );
1051
+ fileBufferPtr_->resize (kMaxSendFileBufferSize );
1051
1052
std::size_t nData;
1052
1053
nData = filePtr->streamCallback_ (fileBufferPtr_->data (),
1053
1054
fileBufferPtr_->size ());
@@ -1129,7 +1130,12 @@ void TcpConnectionImpl::sendFileInLoop(const BufferNodePtr &filePtr)
1129
1130
LOG_TRACE << " send file in loop" ;
1130
1131
if (!fileBufferPtr_)
1131
1132
{
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 );
1133
1139
}
1134
1140
#ifndef _WIN32
1135
1141
lseek (filePtr->sendFd_ , filePtr->offset_ , SEEK_SET);
0 commit comments