Merge pull request #4224 from birarda/master

fix for exception handled lookup in LimitedNodeList
This commit is contained in:
samcake 2015-02-04 10:40:32 -08:00
commit 5d3ede051c

View file

@ -412,25 +412,27 @@ void LimitedNodeList::handleNodeKill(const SharedNodePointer& node) {
SharedNodePointer LimitedNodeList::addOrUpdateNode(const QUuid& uuid, NodeType_t nodeType,
const HifiSockAddr& publicSocket, const HifiSockAddr& localSocket) {
try {
SharedNodePointer matchingNode = _nodeHash.at(uuid);
NodeHash::const_iterator it = _nodeHash.find(uuid);
if (it != _nodeHash.end()) {
SharedNodePointer& matchingNode = it->second;
matchingNode->setPublicSocket(publicSocket);
matchingNode->setLocalSocket(localSocket);
return matchingNode;
} catch (std::out_of_range) {
} else {
// we didn't have this node, so add them
Node* newNode = new Node(uuid, nodeType, publicSocket, localSocket);
SharedNodePointer newNodeSharedPointer(newNode, &QObject::deleteLater);
SharedNodePointer newNodePointer(newNode);
_nodeHash.insert(UUIDNodePair(newNode->getUUID(), newNodeSharedPointer));
_nodeHash.insert(UUIDNodePair(newNode->getUUID(), newNodePointer));
qDebug() << "Added" << *newNode;
emit nodeAdded(newNodeSharedPointer);
emit nodeAdded(newNodePointer);
return newNodeSharedPointer;
return newNodePointer;
}
}