From 2a21ce7945618eb84855f32908396f4cb7299ba7 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 7 Aug 2013 16:40:28 -0700 Subject: [PATCH] socket changes to send correct port to pairing server --- interface/src/PairingHandler.cpp | 6 ++++-- libraries/shared/src/NodeList.cpp | 4 ++-- libraries/shared/src/NodeList.h | 9 ++++----- libraries/shared/src/UDPSocket.cpp | 13 ++++++++----- libraries/shared/src/UDPSocket.h | 6 +++--- 5 files changed, 21 insertions(+), 17 deletions(-) diff --git a/interface/src/PairingHandler.cpp b/interface/src/PairingHandler.cpp index bd363a6b66..920f2c519c 100644 --- a/interface/src/PairingHandler.cpp +++ b/interface/src/PairingHandler.cpp @@ -27,12 +27,14 @@ void PairingHandler::sendPairRequest() { int localAddress = getLocalAddress(); char pairPacket[24] = {}; - sprintf(pairPacket, "Find %d.%d.%d.%d:%d", + sprintf(pairPacket, "Find %d.%d.%d.%d:%hu", localAddress & 0xFF, (localAddress >> 8) & 0xFF, (localAddress >> 16) & 0xFF, (localAddress >> 24) & 0xFF, - NODE_SOCKET_LISTEN_PORT); + NodeList::getInstance()->getSocketListenPort()); + + qDebug("Sending pair packet: %s\n", pairPacket); sockaddr_in pairingServerSocket; diff --git a/libraries/shared/src/NodeList.cpp b/libraries/shared/src/NodeList.cpp index 610a9264cf..6c2647efd5 100644 --- a/libraries/shared/src/NodeList.cpp +++ b/libraries/shared/src/NodeList.cpp @@ -38,7 +38,7 @@ bool pingUnknownNodeThreadStopFlag = false; NodeList* NodeList::_sharedInstance = NULL; -NodeList* NodeList::createInstance(char ownerType, unsigned int socketListenPort) { +NodeList* NodeList::createInstance(char ownerType, unsigned short int socketListenPort) { if (!_sharedInstance) { _sharedInstance = new NodeList(ownerType, socketListenPort); } else { @@ -56,7 +56,7 @@ NodeList* NodeList::getInstance() { return _sharedInstance; } -NodeList::NodeList(char newOwnerType, unsigned int newSocketListenPort) : +NodeList::NodeList(char newOwnerType, unsigned short int newSocketListenPort) : _nodeBuckets(), _numNodes(0), _nodeSocket(newSocketListenPort), diff --git a/libraries/shared/src/NodeList.h b/libraries/shared/src/NodeList.h index c2b966b879..84bc4f6151 100644 --- a/libraries/shared/src/NodeList.h +++ b/libraries/shared/src/NodeList.h @@ -28,7 +28,7 @@ const int MAX_NUM_NODES = 10000; const int NODES_PER_BUCKET = 100; const int MAX_PACKET_SIZE = 1500; -const unsigned int NODE_SOCKET_LISTEN_PORT = 40103; +const unsigned short int NODE_SOCKET_LISTEN_PORT = 40103; const int NODE_SILENCE_THRESHOLD_USECS = 2 * 1000000; const int DOMAIN_SERVER_CHECK_IN_USECS = 1 * 1000000; @@ -55,7 +55,7 @@ public: class NodeList { public: - static NodeList* createInstance(char ownerType, unsigned int socketListenPort = NODE_SOCKET_LISTEN_PORT); + static NodeList* createInstance(char ownerType, unsigned short int socketListenPort = NODE_SOCKET_LISTEN_PORT); static NodeList* getInstance(); typedef NodeListIterator iterator; @@ -81,7 +81,7 @@ public: UDPSocket* getNodeSocket() { return &_nodeSocket; } - unsigned int getSocketListenPort() const { return _nodeSocket.getListeningPort(); }; + unsigned short int getSocketListenPort() const { return _nodeSocket.getListeningPort(); }; void(*linkedDataCreateCallback)(Node *); @@ -128,7 +128,7 @@ public: private: static NodeList* _sharedInstance; - NodeList(char ownerType, unsigned int socketListenPort); + NodeList(char ownerType, unsigned short int socketListenPort); ~NodeList(); NodeList(NodeList const&); // Don't implement, needed to avoid copies of singleton void operator=(NodeList const&); // Don't implement, needed to avoid copies of singleton @@ -142,7 +142,6 @@ private: UDPSocket _nodeSocket; char _ownerType; char* _nodeTypesOfInterest; - unsigned int _socketListenPort; uint16_t _ownerID; uint16_t _lastNodeID; pthread_t removeSilentNodesThread; diff --git a/libraries/shared/src/UDPSocket.cpp b/libraries/shared/src/UDPSocket.cpp index c156ddd1be..39c4dc2e62 100644 --- a/libraries/shared/src/UDPSocket.cpp +++ b/libraries/shared/src/UDPSocket.cpp @@ -129,7 +129,10 @@ sockaddr_in socketForHostname(const char* hostname) { return newSocket; } -UDPSocket::UDPSocket(int listeningPort) : listeningPort(listeningPort), blocking(true) { +UDPSocket::UDPSocket(unsigned short int listeningPort) : + _listeningPort(listeningPort), + blocking(true) +{ init(); // create the socket handle = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); @@ -145,10 +148,10 @@ UDPSocket::UDPSocket(int listeningPort) : listeningPort(listeningPort), blocking sockaddr_in bind_address; bind_address.sin_family = AF_INET; bind_address.sin_addr.s_addr = INADDR_ANY; - bind_address.sin_port = htons((uint16_t) listeningPort); + bind_address.sin_port = htons((uint16_t) _listeningPort); if (bind(handle, (const sockaddr*) &bind_address, sizeof(sockaddr_in)) < 0) { - qDebug("Failed to bind socket to port %d.\n", listeningPort); + qDebug("Failed to bind socket to port %hu.\n", _listeningPort); return; } @@ -156,7 +159,7 @@ UDPSocket::UDPSocket(int listeningPort) : listeningPort(listeningPort), blocking if (listeningPort == 0) { socklen_t addressLength = sizeof(sockaddr_in); getsockname(handle, (sockaddr*) &bind_address, &addressLength); - listeningPort = ntohs(bind_address.sin_port); + _listeningPort = ntohs(bind_address.sin_port); } // set timeout on socket recieve to 0.5 seconds @@ -165,7 +168,7 @@ UDPSocket::UDPSocket(int listeningPort) : listeningPort(listeningPort), blocking tv.tv_usec = 500000; setsockopt(handle, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof tv); - qDebug("Created UDP socket listening on port %d.\n", listeningPort); + qDebug("Created UDP socket listening on port %hu.\n", _listeningPort); } UDPSocket::~UDPSocket() { diff --git a/libraries/shared/src/UDPSocket.h b/libraries/shared/src/UDPSocket.h index 58bee3d2de..34f8ee0b06 100644 --- a/libraries/shared/src/UDPSocket.h +++ b/libraries/shared/src/UDPSocket.h @@ -20,10 +20,10 @@ class UDPSocket { public: - UDPSocket(int listening_port); + UDPSocket(unsigned short int listeningPort); ~UDPSocket(); bool init(); - int getListeningPort() const { return listeningPort; } + unsigned short int getListeningPort() const { return _listeningPort; } void setBlocking(bool blocking); bool isBlocking() const { return blocking; } int send(sockaddr* destAddress, const void* data, size_t byteLength) const; @@ -32,7 +32,7 @@ public: bool receive(sockaddr* recvAddress, void* receivedData, ssize_t* receivedBytes) const; private: int handle; - int listeningPort; + unsigned short int _listeningPort; bool blocking; };