瀏覽代碼

Merge branch 'v0.22'

Paul-Louis Ageneau 4 月之前
父節點
當前提交
65e1315bb0
共有 1 個文件被更改,包括 4 次插入1 次删除
  1. 4 1
      src/impl/tcptransport.cpp

+ 4 - 1
src/impl/tcptransport.cpp

@@ -372,7 +372,9 @@ bool TcpTransport::trySendMessage(message_ptr &message) {
 		int len = ::send(mSock, data, int(size), flags);
 		if (len < 0) {
 			if (sockerrno == SEAGAIN || sockerrno == SEWOULDBLOCK) {
-				message = make_message(message->end() - size, message->end());
+				if (size < message->size())
+					message = make_message(message->end() - size, message->end());
+
 				return false;
 			} else {
 				PLOG_ERROR << "Connection closed, errno=" << sockerrno;
@@ -427,6 +429,7 @@ void TcpTransport::process(PollService::Event event) {
 		}
 
 		case PollService::Event::Out: {
+			std::lock_guard lock(mSendMutex);
 			if (trySendQueue())
 				setPoll(PollService::Direction::In);