diff --git a/js/libtextsecure.js b/js/libtextsecure.js index fd0fbd5625..109e56d119 100644 --- a/js/libtextsecure.js +++ b/js/libtextsecure.js @@ -39745,8 +39745,16 @@ OutgoingMessage.prototype = { return textsecure.storage.devices.getDeviceObjectsForNumber(number).then(function(devicesForNumber) { return Promise.all(devicesForNumber.map(function(device) { return textsecure.protocol_wrapper.hasOpenSession(device.encodedNumber).then(function(result) { - if (!result) - return this.getKeysForNumber(number, [parseInt(textsecure.utils.unencodeNumber(device.encodedNumber)[1])]); + if (!result) { + return this.getKeysForNumber(number, + [parseInt(textsecure.utils.unencodeNumber(device.encodedNumber)[1])] + ).catch(function(error) { + if (error.name !== 'OutgoingIdentityKeyError') { + this.registerError(number, "Failed to retreive new device keys for " + device.encodedNumber, error); + } + return Promise.reject(); + }.bind(this)); + } }.bind(this)); }.bind(this))).then(function() { return textsecure.storage.devices.getDeviceObjectsForNumber(number).then(function(devicesForNumber) { diff --git a/libtextsecure/outgoing_message.js b/libtextsecure/outgoing_message.js index 39633b99e7..b2b32edab2 100644 --- a/libtextsecure/outgoing_message.js +++ b/libtextsecure/outgoing_message.js @@ -114,8 +114,16 @@ OutgoingMessage.prototype = { return textsecure.storage.devices.getDeviceObjectsForNumber(number).then(function(devicesForNumber) { return Promise.all(devicesForNumber.map(function(device) { return textsecure.protocol_wrapper.hasOpenSession(device.encodedNumber).then(function(result) { - if (!result) - return this.getKeysForNumber(number, [parseInt(textsecure.utils.unencodeNumber(device.encodedNumber)[1])]); + if (!result) { + return this.getKeysForNumber(number, + [parseInt(textsecure.utils.unencodeNumber(device.encodedNumber)[1])] + ).catch(function(error) { + if (error.name !== 'OutgoingIdentityKeyError') { + this.registerError(number, "Failed to retreive new device keys for " + device.encodedNumber, error); + } + return Promise.reject(); + }.bind(this)); + } }.bind(this)); }.bind(this))).then(function() { return textsecure.storage.devices.getDeviceObjectsForNumber(number).then(function(devicesForNumber) {