From ec260dbab26767e0591aff5df7db8ef426a157d8 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 13 Aug 2014 15:48:03 -0700 Subject: [PATCH] change both send and receive socket buffers --- libraries/networking/src/LimitedNodeList.cpp | 28 +++++++++++++------- libraries/networking/src/LimitedNodeList.h | 2 +- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/libraries/networking/src/LimitedNodeList.cpp b/libraries/networking/src/LimitedNodeList.cpp index 13dc558687..44e45c359a 100644 --- a/libraries/networking/src/LimitedNodeList.cpp +++ b/libraries/networking/src/LimitedNodeList.cpp @@ -82,8 +82,8 @@ LimitedNodeList::LimitedNodeList(unsigned short socketListenPort, unsigned short qDebug() << "NodeList DTLS socket is listening on" << _dtlsSocket->localPort(); } - const int LARGER_SNDBUF_SIZE = 1048576; - changeSendSocketBufferSize(LARGER_SNDBUF_SIZE); + const int LARGER_BUFFER_SIZE = 1048576; + changeSocketBufferSizes(LARGER_BUFFER_SIZE); _packetStatTimer.start(); } @@ -129,7 +129,7 @@ QUdpSocket& LimitedNodeList::getDTLSSocket() { return *_dtlsSocket; } -void LimitedNodeList::changeSendSocketBufferSize(int numSendBytes) { +void LimitedNodeList::changeSocketBufferSizes(int numBytes) { // change the socket send buffer size to be 1MB int oldBufferSize = 0; @@ -139,15 +139,23 @@ void LimitedNodeList::changeSendSocketBufferSize(int numSendBytes) { unsigned int sizeOfInt = sizeof(oldBufferSize); #endif - getsockopt(_nodeSocket.socketDescriptor(), SOL_SOCKET, SO_SNDBUF, reinterpret_cast(&oldBufferSize), &sizeOfInt); + for (int i = 0; i < 2; i++) { + int bufferOpt = (i == 0) ? SO_SNDBUF : SO_RCVBUF; + + getsockopt(_nodeSocket.socketDescriptor(), SOL_SOCKET, bufferOpt, reinterpret_cast(&oldBufferSize), &sizeOfInt); + + setsockopt(_nodeSocket.socketDescriptor(), SOL_SOCKET, bufferOpt, reinterpret_cast(&numBytes), + sizeof(numBytes)); + + int newBufferSize = 0; + getsockopt(_nodeSocket.socketDescriptor(), SOL_SOCKET, bufferOpt, reinterpret_cast(&newBufferSize), &sizeOfInt); + + QString bufferTypeString = (i == 0) ? "send" : "receive"; + + qDebug() << "Changed socket" << bufferTypeString << "buffer size from" << oldBufferSize << "to" << newBufferSize << "bytes"; + } - setsockopt(_nodeSocket.socketDescriptor(), SOL_SOCKET, SO_SNDBUF, reinterpret_cast(&numSendBytes), - sizeof(numSendBytes)); - int newBufferSize = 0; - getsockopt(_nodeSocket.socketDescriptor(), SOL_SOCKET, SO_SNDBUF, reinterpret_cast(&newBufferSize), &sizeOfInt); - - qDebug() << "Changed socket send buffer size from" << oldBufferSize << "to" << newBufferSize << "bytes"; } bool LimitedNodeList::packetVersionAndHashMatch(const QByteArray& packet) { diff --git a/libraries/networking/src/LimitedNodeList.h b/libraries/networking/src/LimitedNodeList.h index 3e62d4aaab..114d3de910 100644 --- a/libraries/networking/src/LimitedNodeList.h +++ b/libraries/networking/src/LimitedNodeList.h @@ -123,7 +123,7 @@ protected: NodeHash::iterator killNodeAtHashIterator(NodeHash::iterator& nodeItemToKill); - void changeSendSocketBufferSize(int numSendBytes); + void changeSocketBufferSizes(int numBytes); QUuid _sessionUUID; NodeHash _nodeHash;