diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index afe9b7ca50..65f85215cb 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -131,6 +131,8 @@ DomainServer::DomainServer(int argc, char* argv[]) : setupNodeListAndAssignments(); + updateReplicatedNodes(); + if (_type != NonMetaverse) { // if we have a metaverse domain, we'll use an access token for API calls resetAccountManagerAccessToken(); @@ -960,6 +962,11 @@ void DomainServer::handleConnectedNode(SharedNodePointer newNode) { emit userConnected(); } + if (shouldReplicateNode(*newNode)) { + qDebug() << "Setting node to replicated: " << newNode->getUUID(); + newNode->setIsReplicated(true); + } + // send out this node to our other connected nodes broadcastNewNode(newNode); } @@ -2217,16 +2224,19 @@ void DomainServer::updateReplicatedNodes() { _replicatedUsernames.clear(); auto settings = _settingsManager.getSettingsMap(); if (settings.contains(REPLICATION_SETTINGS_KEY)) { - auto replicationSettings = settings.value(REPLICATION_SETTINGS_KEY).toJsonObject(); - auto usersSettings = replicationSettings.value("users").toArray(); - for (auto& username : usersSettings) { - _replicatedUsernames.push_back(username.toString()); + auto replicationSettings = settings.value(REPLICATION_SETTINGS_KEY).toMap(); + if (replicationSettings.contains("users")) { + auto usersSettings = replicationSettings.value("users").toList(); + for (auto& username : usersSettings) { + _replicatedUsernames.push_back(username.toString()); + } } } auto nodeList = DependencyManager::get(); nodeList->eachNode([&](const SharedNodePointer& otherNode) { if (shouldReplicateNode(*otherNode)) { + qDebug() << "Setting node to replicated: " << otherNode->getUUID(); otherNode->setIsReplicated(true); } }); @@ -2234,15 +2244,12 @@ void DomainServer::updateReplicatedNodes() { bool DomainServer::shouldReplicateNode(const Node& node) { QString verifiedUsername = node.getPermissions().getVerifiedUserName(); + qDebug() << "Verified username: " << verifiedUsername; auto it = find(_replicatedUsernames.cbegin(), _replicatedUsernames.cend(), verifiedUsername); return it != _replicatedUsernames.end() && node.getType() == NodeType::Agent; }; void DomainServer::nodeAdded(SharedNodePointer node) { - if (shouldReplicateNode(*node)) { - node->setIsReplicated(true); - } - // we don't use updateNodeWithData, so add the DomainServerNodeData to the node here node->setLinkedData(std::unique_ptr { new DomainServerNodeData() }); }