mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 04:37:48 +02:00
Fix logic for reliable service address-change when new add already used
This commit is contained in:
parent
51ef37fd27
commit
639beee6cb
1 changed files with 8 additions and 11 deletions
|
@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue