From e42853a96c0237a95866c248b81c850956893e25 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Tue, 31 Jan 2017 16:05:38 -0800 Subject: [PATCH] cleanly log failed entity adds, and tell the client to delete his copy --- libraries/entities/src/EntityTree.cpp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index 5fa86f6745..e2a6d8beb0 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -1111,7 +1111,15 @@ int EntityTree::processEditPacketData(ReceivedMessage& message, const unsigned c endUpdate = usecTimestampNow(); _totalUpdates++; } else if (message.getType() == PacketType::EntityAdd) { - if (senderNode->getCanRez() || senderNode->getCanRezTmp()) { + bool failedAdd = !allowed; + if (!allowed) { + qCDebug(entities) << "Filtered entity add. ID:" << entityItemID; + } else if (!senderNode->getCanRez() && !senderNode->getCanRezTmp()) { + failedAdd = true; + qCDebug(entities) << "User without 'rez rights' [" << senderNode->getUUID() + << "] attempted to add an entity ID:" << entityItemID; + + } else { // this is a new entity... assign a new entityID properties.setCreated(properties.getLastEdited()); properties.setLastEditedBy(senderNode->getUUID()); @@ -1126,7 +1134,7 @@ int EntityTree::processEditPacketData(ReceivedMessage& message, const unsigned c startLogging = usecTimestampNow(); if (wantEditLogging()) { qCDebug(entities) << "User [" << senderNode->getUUID() << "] added entity. ID:" - << newEntity->getEntityItemID(); + << newEntity->getEntityItemID(); qCDebug(entities) << " properties:" << properties; } if (wantTerseEditLogging()) { @@ -1136,10 +1144,14 @@ int EntityTree::processEditPacketData(ReceivedMessage& message, const unsigned c } endLogging = usecTimestampNow(); + } else { + failedAdd = true; + qCDebug(entities) << "Add entity failed ID:" << entityItemID; } - } else { - qCDebug(entities) << "User without 'rez rights' [" << senderNode->getUUID() - << "] attempted to add an entity."; + } + if (failedAdd) { // Let client know it failed, so that they don't have an entity that no one else sees. + QWriteLocker locker(&_recentlyDeletedEntitiesLock); + _recentlyDeletedEntityItemIDs.insert(usecTimestampNow(), entityItemID); } } else { static QString repeatedMessage =