Fix logic for reliable service address-change when new add already used

This commit is contained in:
Simon Walton 2019-09-11 15:21:49 -07:00
parent 51ef37fd27
commit 639beee6cb

View file

@ -546,7 +546,6 @@ void Socket::handleStateChanged(QAbstractSocket::SocketState socketState) {
void Socket::handleRemoteAddressChange(HifiSockAddr previousAddress, HifiSockAddr currentAddress) { void Socket::handleRemoteAddressChange(HifiSockAddr previousAddress, HifiSockAddr currentAddress) {
{ {
Lock connectionsLock(_connectionsHashMutex); Lock connectionsLock(_connectionsHashMutex);
_connectionsHash.erase(currentAddress);
const auto connectionIter = _connectionsHash.find(previousAddress); const auto connectionIter = _connectionsHash.find(previousAddress);
if (connectionIter != _connectionsHash.end()) { if (connectionIter != _connectionsHash.end()) {
@ -554,18 +553,16 @@ void Socket::handleRemoteAddressChange(HifiSockAddr previousAddress, HifiSockAdd
_connectionsHash.erase(connectionIter); _connectionsHash.erase(connectionIter);
connection->setDestinationAddress(currentAddress); connection->setDestinationAddress(currentAddress);
_connectionsHash[currentAddress] = move(connection); _connectionsHash[currentAddress] = move(connection);
} connectionsLock.release();
}
{ Lock sequenceNumbersLock(_unreliableSequenceNumbersMutex);
Lock sequenceNumbersLock(_unreliableSequenceNumbersMutex); const auto sequenceNumbersIter = _unreliableSequenceNumbers.find(previousAddress);
_unreliableSequenceNumbers.erase(currentAddress); if (sequenceNumbersIter != _unreliableSequenceNumbers.end()) {
auto sequenceNumbers = sequenceNumbersIter->second;
_unreliableSequenceNumbers.erase(sequenceNumbersIter);
_unreliableSequenceNumbers[currentAddress] = sequenceNumbers;
}
const auto sequenceNumbersIter = _unreliableSequenceNumbers.find(previousAddress);
if (sequenceNumbersIter != _unreliableSequenceNumbers.end()) {
auto sequenceNumbers = sequenceNumbersIter->second;
_unreliableSequenceNumbers.erase(sequenceNumbersIter);
_unreliableSequenceNumbers[currentAddress] = sequenceNumbers;
} }
} }
} }