mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-07-10 22:38:34 +02:00
repair iterator push on silent node removal
This commit is contained in:
parent
ed0ed96029
commit
66f50c38e3
3 changed files with 14 additions and 11 deletions
|
@ -279,10 +279,8 @@ void NodeList::clear() {
|
||||||
|
|
||||||
// iterate the nodes in the list
|
// iterate the nodes in the list
|
||||||
while (nodeItem != _nodeHash.end()) {
|
while (nodeItem != _nodeHash.end()) {
|
||||||
// emit our signal to say this node has been killed
|
killNodeAtHashIterator(nodeItem);
|
||||||
emit nodeKilled(nodeItem.value());
|
nodeItem++;
|
||||||
// erase the node from our node hash
|
|
||||||
_nodeHash.erase(nodeItem);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -448,9 +446,11 @@ void NodeList::killNodeWithUUID(const QUuid& nodeUUID) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NodeList::killNodeAtHashIterator(NodeHash::iterator nodeItemToKill) {
|
NodeHash::iterator NodeList::killNodeAtHashIterator(NodeHash::iterator& nodeItemToKill) {
|
||||||
|
qDebug() << "Killed" << *nodeItemToKill.value() << "\n";
|
||||||
emit nodeKilled(nodeItemToKill.value());
|
emit nodeKilled(nodeItemToKill.value());
|
||||||
_nodeHash.erase(nodeItemToKill);
|
|
||||||
|
return _nodeHash.erase(nodeItemToKill);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -789,6 +789,8 @@ void NodeList::removeSilentNodes() {
|
||||||
|
|
||||||
NodeHash::iterator nodeItem = _nodeHash.begin();
|
NodeHash::iterator nodeItem = _nodeHash.begin();
|
||||||
|
|
||||||
|
int index = 0;
|
||||||
|
|
||||||
while (nodeItem != _nodeHash.end()) {
|
while (nodeItem != _nodeHash.end()) {
|
||||||
|
|
||||||
SharedNodePointer node = nodeItem.value();
|
SharedNodePointer node = nodeItem.value();
|
||||||
|
@ -797,10 +799,11 @@ void NodeList::removeSilentNodes() {
|
||||||
|
|
||||||
if ((usecTimestampNow() - node->getLastHeardMicrostamp()) > NODE_SILENCE_THRESHOLD_USECS) {
|
if ((usecTimestampNow() - node->getLastHeardMicrostamp()) > NODE_SILENCE_THRESHOLD_USECS) {
|
||||||
// call our private method to kill this node (removes it and emits the right signal)
|
// call our private method to kill this node (removes it and emits the right signal)
|
||||||
killNodeAtHashIterator(nodeItem);
|
nodeItem = killNodeAtHashIterator(nodeItem);
|
||||||
|
} else {
|
||||||
|
// we didn't kill this node, push the iterator forwards
|
||||||
|
++nodeItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
nodeItem++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -144,7 +144,7 @@ private:
|
||||||
|
|
||||||
void processKillNode(unsigned char* packetData, size_t dataBytes);
|
void processKillNode(unsigned char* packetData, size_t dataBytes);
|
||||||
|
|
||||||
void killNodeAtHashIterator(NodeHash::iterator nodeItemToKill);
|
NodeHash::iterator killNodeAtHashIterator(NodeHash::iterator& nodeItemToKill);
|
||||||
|
|
||||||
NodeHash _nodeHash;
|
NodeHash _nodeHash;
|
||||||
QString _domainHostname;
|
QString _domainHostname;
|
||||||
|
|
|
@ -20,7 +20,7 @@ PACKET_VERSION versionForPacketType(PACKET_TYPE type) {
|
||||||
return 2;
|
return 2;
|
||||||
|
|
||||||
case PACKET_TYPE_HEAD_DATA:
|
case PACKET_TYPE_HEAD_DATA:
|
||||||
return 12;
|
return 13;
|
||||||
|
|
||||||
case PACKET_TYPE_AVATAR_URLS:
|
case PACKET_TYPE_AVATAR_URLS:
|
||||||
return 2;
|
return 2;
|
||||||
|
|
Loading…
Reference in a new issue