Handle remote public-address changes

This commit is contained in:
Simon Walton 2019-06-26 18:04:41 -07:00
parent b96db7517c
commit 50965f1916
4 changed files with 19 additions and 14 deletions

View file

@ -59,13 +59,13 @@ void NetworkPeer::setPublicSocket(const HifiSockAddr& publicSocket) {
bool wasOldSocketNull = _publicSocket.isNull();
auto temp = _publicSocket.objectName();
auto previousSocket = _publicSocket;
_publicSocket = publicSocket;
_publicSocket.setObjectName(temp);
_publicSocket.setObjectName(previousSocket.objectName());
if (!wasOldSocketNull) {
qCDebug(networking) << "Public socket change for node" << *this;
emit socketUpdated();
qCDebug(networking) << "Public socket change for node" << *this << "; previously" << previousSocket;
emit socketUpdated(previousSocket, _publicSocket);
}
}
}
@ -79,13 +79,13 @@ void NetworkPeer::setLocalSocket(const HifiSockAddr& localSocket) {
bool wasOldSocketNull = _localSocket.isNull();
auto temp = _localSocket.objectName();
auto previousSocket = _localSocket;
_localSocket = localSocket;
_localSocket.setObjectName(temp);
_localSocket.setObjectName(previousSocket.objectName());
if (!wasOldSocketNull) {
qCDebug(networking) << "Local socket change for node" << *this;
emit socketUpdated();
qCDebug(networking) << "Local socket change for node" << *this << "; previously" << previousSocket;
emit socketUpdated(previousSocket, _localSocket);
}
}
}
@ -99,13 +99,13 @@ void NetworkPeer::setSymmetricSocket(const HifiSockAddr& symmetricSocket) {
bool wasOldSocketNull = _symmetricSocket.isNull();
auto temp = _symmetricSocket.objectName();
auto previousSocket = _symmetricSocket;
_symmetricSocket = symmetricSocket;
_symmetricSocket.setObjectName(temp);
_symmetricSocket.setObjectName(previousSocket.objectName());
if (!wasOldSocketNull) {
qCDebug(networking) << "Symmetric socket change for node" << *this;
emit socketUpdated();
qCDebug(networking) << "Symmetric socket change for node" << *this << "; previously" << previousSocket;
emit socketUpdated(previousSocket, _symmetricSocket);
}
}
}

View file

@ -94,7 +94,7 @@ public slots:
signals:
void pingTimerTimeout();
void socketActivated(const HifiSockAddr& sockAddr);
void socketUpdated();
void socketUpdated(HifiSockAddr previousAddress, HifiSockAddr currentAddress);
protected:
void setActiveSocket(HifiSockAddr* discoveredSocket);

View file

@ -538,6 +538,11 @@ void Socket::handleStateChanged(QAbstractSocket::SocketState socketState) {
}
}
void Socket::handleRemoteAddressChange(HifiSockAddr previousAddress, HifiSockAddr currentAddress) {
Lock connectionsLock(_connectionsHashMutex);
}
#if (PR_BUILD || DEV_BUILD)
void Socket::sendFakedHandshakeRequest(const HifiSockAddr& sockAddr) {

View file

@ -106,11 +106,11 @@ private slots:
void handleSocketError(QAbstractSocket::SocketError socketError);
void handleStateChanged(QAbstractSocket::SocketState socketState);
void handleRemoteAddressChange(HifiSockAddr previousAddress, HifiSockAddr currentAddress);
private:
void setSystemBufferSizes();
Connection* findOrCreateConnection(const HifiSockAddr& sockAddr, bool filterCreation = false);
bool socketMatchesNodeOrDomain(const HifiSockAddr& sockAddr);
// privatized methods used by UDTTest - they are private since they must be called on the Socket thread
ConnectionStats::Stats sampleStatsForConnection(const HifiSockAddr& destination);