mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-07-10 16:18:39 +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
|
||||
while (nodeItem != _nodeHash.end()) {
|
||||
// emit our signal to say this node has been killed
|
||||
emit nodeKilled(nodeItem.value());
|
||||
// erase the node from our node hash
|
||||
_nodeHash.erase(nodeItem);
|
||||
killNodeAtHashIterator(nodeItem);
|
||||
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());
|
||||
_nodeHash.erase(nodeItemToKill);
|
||||
|
||||
return _nodeHash.erase(nodeItemToKill);
|
||||
}
|
||||
|
||||
|
||||
|
@ -789,6 +789,8 @@ void NodeList::removeSilentNodes() {
|
|||
|
||||
NodeHash::iterator nodeItem = _nodeHash.begin();
|
||||
|
||||
int index = 0;
|
||||
|
||||
while (nodeItem != _nodeHash.end()) {
|
||||
|
||||
SharedNodePointer node = nodeItem.value();
|
||||
|
@ -797,10 +799,11 @@ void NodeList::removeSilentNodes() {
|
|||
|
||||
if ((usecTimestampNow() - node->getLastHeardMicrostamp()) > NODE_SILENCE_THRESHOLD_USECS) {
|
||||
// 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 killNodeAtHashIterator(NodeHash::iterator nodeItemToKill);
|
||||
NodeHash::iterator killNodeAtHashIterator(NodeHash::iterator& nodeItemToKill);
|
||||
|
||||
NodeHash _nodeHash;
|
||||
QString _domainHostname;
|
||||
|
|
|
@ -20,7 +20,7 @@ PACKET_VERSION versionForPacketType(PACKET_TYPE type) {
|
|||
return 2;
|
||||
|
||||
case PACKET_TYPE_HEAD_DATA:
|
||||
return 12;
|
||||
return 13;
|
||||
|
||||
case PACKET_TYPE_AVATAR_URLS:
|
||||
return 2;
|
||||
|
|
Loading…
Reference in a new issue