From 4ee4ad80c3ff0bfd69e29ca3f0509b62bf8470af Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Fri, 23 Jun 2017 09:25:22 -0700 Subject: [PATCH] Message.send - check for missing identityKey, also add logging FREEBIE --- js/libtextsecure.js | 4 +--- js/models/messages.js | 4 ++-- libtextsecure/outgoing_message.js | 4 +--- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/js/libtextsecure.js b/js/libtextsecure.js index b03e201eb..f0a32f6dd 100644 --- a/js/libtextsecure.js +++ b/js/libtextsecure.js @@ -38918,9 +38918,7 @@ OutgoingMessage.prototype = { } else if (error.message === "Identity key changed") { error.timestamp = this.timestamp; error.originalMessage = this.message.toArrayBuffer(); - // looks like this is an error - we don't have the identity key in this situation! - // but we need it to update the identity key when we get a OutgoingIdentityKeyError - // error.identityKey = ????; + console.log('Got "key changed" error from encrypt - no identityKey for application layer', number, deviceIds) throw error; } else { this.registerError(number, "Failed to create or send message", error); diff --git a/js/models/messages.js b/js/models/messages.js index c243bd09f..2ca8d3a38 100644 --- a/js/models/messages.js +++ b/js/models/messages.js @@ -225,7 +225,7 @@ if (result.name === 'SignedPreKeyRotationError') { return getAccountManager().rotateSignedPreKey(); } - else if (result.name === 'OutgoingIdentityKeyError') { + else if (result.name === 'OutgoingIdentityKeyError' && result.identityKey) { promises.push(textsecure.storage.protocol.saveIdentity( result.number, result.identityKey, false )); @@ -237,7 +237,7 @@ promises.push(this.sendSyncMessage()); } promises = promises.concat(_.map(result.errors, function(error) { - if (error.name === 'OutgoingIdentityKeyError') { + if (error.name === 'OutgoingIdentityKeyError' && error.identityKey) { return textsecure.storage.protocol.saveIdentity( error.number, error.identityKey, false ); diff --git a/libtextsecure/outgoing_message.js b/libtextsecure/outgoing_message.js index b0f9849a9..5871f4bc7 100644 --- a/libtextsecure/outgoing_message.js +++ b/libtextsecure/outgoing_message.js @@ -176,9 +176,7 @@ OutgoingMessage.prototype = { } else if (error.message === "Identity key changed") { error.timestamp = this.timestamp; error.originalMessage = this.message.toArrayBuffer(); - // looks like this is an error - we don't have the identity key in this situation! - // but we need it to update the identity key when we get a OutgoingIdentityKeyError - // error.identityKey = ????; + console.log('Got "key changed" error from encrypt - no identityKey for application layer', number, deviceIds) throw error; } else { this.registerError(number, "Failed to create or send message", error);