diff --git a/domain-server/src/main.cpp b/domain-server/src/main.cpp index c4c1d917c9..87ede8572e 100644 --- a/domain-server/src/main.cpp +++ b/domain-server/src/main.cpp @@ -190,7 +190,10 @@ int main(int argc, const char* argv[]) { if (nodePublicAddress.sin_addr.s_addr == serverLocalAddress || nodePublicAddress.sin_addr.s_addr == htonl(INADDR_LOOPBACK)) { nodePublicAddress.sin_addr.s_addr = 0; - destinationSocket = (sockaddr*) &nodeLocalAddress; + + if (nodePublicAddress.sin_addr.s_addr != htonl(INADDR_LOOPBACK)) { + destinationSocket = (sockaddr*) &nodeLocalAddress; + } } Node* newNode = nodeList->addOrUpdateNode((sockaddr*) &nodePublicAddress, diff --git a/libraries/shared/src/NodeList.cpp b/libraries/shared/src/NodeList.cpp index 50853c1c93..7b2566eef0 100644 --- a/libraries/shared/src/NodeList.cpp +++ b/libraries/shared/src/NodeList.cpp @@ -120,7 +120,9 @@ void NodeList::processNodeData(sockaddr* senderAddress, unsigned char* packetDat sockaddr_in domainServerSocket = *(sockaddr_in*) senderAddress; const char* domainSenderIP = inet_ntoa(domainServerSocket.sin_addr); - if (memcmp(domainSenderIP, _domainIP, strlen(domainSenderIP)) == 0) { + if (memcmp(domainSenderIP, _domainIP, strlen(domainSenderIP)) == 0 + || (inet_addr(_domainIP) == htonl(INADDR_LOOPBACK) + && domainServerSocket.sin_addr.s_addr == getLocalAddress())) { processDomainServerList(packetData, dataBytes); }