diff --git a/assignment-client/src/avatars/AvatarMixer.cpp b/assignment-client/src/avatars/AvatarMixer.cpp index 717d969e02..3e93981ed3 100644 --- a/assignment-client/src/avatars/AvatarMixer.cpp +++ b/assignment-client/src/avatars/AvatarMixer.cpp @@ -422,7 +422,7 @@ void AvatarMixer::manageIdentityData(const SharedNodePointer& node) { // tell node whose name changed about its new session display name or avatar. sendIdentityPacket(nodeData, node); - avatar.clearIdentityUpdate(); + avatar.setNeedsIdentityUpdate(false); } } diff --git a/assignment-client/src/avatars/AvatarMixerSlave.cpp b/assignment-client/src/avatars/AvatarMixerSlave.cpp index 32c944f5b8..64f4aa6821 100644 --- a/assignment-client/src/avatars/AvatarMixerSlave.cpp +++ b/assignment-client/src/avatars/AvatarMixerSlave.cpp @@ -157,6 +157,11 @@ qint64 AvatarMixerSlave::addChangedTraitsToBulkPacket(AvatarMixerClientData* lis ++simpleReceivedIt; } + if (bytesWritten > 0 && sendingAvatar->isCertifyFailed()) { + // Resend identity packet if certification failed: + sendingAvatar->setNeedsIdentityUpdate(); + } + // enumerate the received instanced trait versions auto instancedReceivedIt = lastReceivedVersions.instancedCBegin(); while (instancedReceivedIt != lastReceivedVersions.instancedCEnd()) { diff --git a/assignment-client/src/avatars/MixerAvatar.h b/assignment-client/src/avatars/MixerAvatar.h index 528943df24..bafc398a02 100644 --- a/assignment-client/src/avatars/MixerAvatar.h +++ b/assignment-client/src/avatars/MixerAvatar.h @@ -27,7 +27,7 @@ public: void fetchAvatarFST(); virtual bool isCertifyFailed() const override { return _verifyState == verificationFailed; } bool needsIdentityUpdate() const { return _needsIdentityUpdate; } - void clearIdentityUpdate() { _needsIdentityUpdate = false; } + void setNeedsIdentityUpdate(bool value = true) { _needsIdentityUpdate = value; } void processCertifyEvents(); void handleChallengeResponse(ReceivedMessage* response);