From 0e1fc06a6f3b5c7aaa06ba370f85337176ae8a85 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 1 Apr 2014 15:55:05 -0700 Subject: The remove paths on send fail thing in Peer.cpp was not well thought out, and there is no point in mallocing the TCP write buffer. --- node/TcpSocket.cpp | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) (limited to 'node/TcpSocket.cpp') diff --git a/node/TcpSocket.cpp b/node/TcpSocket.cpp index b21cbd5e..bc0357fd 100644 --- a/node/TcpSocket.cpp +++ b/node/TcpSocket.cpp @@ -48,8 +48,6 @@ #include #endif -#define ZT_TCP_MAX_SENDQ_LENGTH (ZT_SOCKET_MAX_MESSAGE_LEN * 8) - namespace ZeroTier { TcpSocket::~TcpSocket() @@ -59,8 +57,6 @@ TcpSocket::~TcpSocket() #else ::close(_sock); #endif - if (_outbuf) - ::free(_outbuf); //printf("!!! TCP SOCKET DESTROYED @%.16llx to %s\r\n",(unsigned long long)this,_remote.toString().c_str()); } @@ -72,26 +68,11 @@ bool TcpSocket::send(const InetAddress &to,const void *msg,unsigned int msglen) return true; // sanity check Mutex::Lock _l(_writeLock); + bool writeInProgress = ((_outptr != 0)||(_connecting)); - // Ensure that _outbuf is large enough - unsigned int newptr = _outptr + 5 + msglen; - if (newptr > _outbufsize) { - unsigned int newbufsize = _outbufsize; - while (newbufsize < newptr) - newbufsize += ZT_SOCKET_MAX_MESSAGE_LEN; - if (newbufsize > ZT_TCP_MAX_SENDQ_LENGTH) - return false; // cannot send, outbuf full - unsigned char *newbuf = (unsigned char *)::malloc(newbufsize); - if (!newbuf) - return false; // cannot send, no memory - _outbufsize = newbufsize; - if (_outbuf) { - memcpy(newbuf,_outbuf,_outptr); - ::free(_outbuf); - } - _outbuf = newbuf; - } + if ((_outptr + 5 + msglen) > (unsigned int)sizeof(_outbuf)) + return false; _outbuf[_outptr++] = 0x17; // look like TLS data _outbuf[_outptr++] = 0x03; -- cgit v1.2.3