diff --git a/libraries/networking/src/DomainHandler.h b/libraries/networking/src/DomainHandler.h index 515dd92c12..34eda7b00d 100644 --- a/libraries/networking/src/DomainHandler.h +++ b/libraries/networking/src/DomainHandler.h @@ -59,7 +59,7 @@ public: bool requiresICE() const { return !_iceServerSockAddr.isNull(); } const HifiSockAddr& getICEServerSockAddr() const { return _iceServerSockAddr; } - const NetworkPeer& getICEPeer() const { return _icePeer; } + NetworkPeer& getICEPeer() const { return _icePeer; } void activateICELocalSocket(); void activateICEPublicSocket(); diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index de586f3d36..580fdb0641 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -335,7 +335,11 @@ void NodeList::sendDomainServerCheckIn() { } void NodeList::handleICEConnectionToDomainServer() { - if (_domainHandler.getICEPeer().isNull()) { + if (_domainHandler.getICEPeer().isNull() + || _domainHandler.getICEPeer().getConnectionAttempts() >= MAX_ICE_CONNECTION_ATTEMPTS) { + + _domainHandler.getICEPeer().resetConnectionAttemps(); + LimitedNodeList::sendHeartbeatToIceServer(_domainHandler.getICEServerSockAddr(), _domainHandler.getICEClientID(), _domainHandler.getUUID()); @@ -349,6 +353,8 @@ void NodeList::handleICEConnectionToDomainServer() { QByteArray publicPingPacket = constructPingPacket(PingType::Public, false, _domainHandler.getICEClientID()); writeUnverifiedDatagram(publicPingPacket, _domainHandler.getICEPeer().getPublicSocket()); + + _domainHandler.getICEPeer().incrementConnectionAttempts(); } }