From acaf7b8de2e3f99728c70a1c248a0d68d07555e4 Mon Sep 17 00:00:00 2001 From: lilia Date: Wed, 23 Sep 2015 11:36:29 -0700 Subject: [PATCH] Refactor relay consistency check Check the device list for relay consitency and throw an exception before attempting to encrypt to any of the mismatched devices. // FREEBIE --- js/libtextsecure.js | 23 ++++++----------------- libtextsecure/sendmessage.js | 23 ++++++----------------- 2 files changed, 12 insertions(+), 34 deletions(-) diff --git a/js/libtextsecure.js b/js/libtextsecure.js index 3b3e94628..a37128b2c 100644 --- a/js/libtextsecure.js +++ b/js/libtextsecure.js @@ -39690,24 +39690,13 @@ window.textsecure.messaging = function() { // message == DataMessage or ContentMessage proto function sendMessageToDevices(timestamp, number, deviceObjectList, message) { - var relay = undefined; - return Promise.all(deviceObjectList.map(function(device) { - if (device.relay !== undefined) { - if (relay === undefined) - relay = device.relay; - else if (relay != device.relay) - return new Promise(function() { - throw new Error("Mismatched relays for number " + number); - }); - } else { - if (relay === undefined) - relay = ""; - else if (relay != "") - return new Promise(function() { - throw new Error("Mismatched relays for number " + number); - }); + var relay = deviceObjectList[0].relay; + for (var i=1; i < deviceObjectList.length; ++i) { + if (deviceObjectList[i].relay !== relay) { + throw new Error("Mismatched relays for number " + number); } - + } + return Promise.all(deviceObjectList.map(function(device) { return textsecure.protocol_wrapper.encryptMessageFor(device, message).then(function(encryptedMsg) { return textsecure.protocol_wrapper.getRegistrationId(device.encodedNumber).then(function(registrationId) { return textsecure.storage.devices.removeTempKeysFromDevice(device.encodedNumber).then(function() { diff --git a/libtextsecure/sendmessage.js b/libtextsecure/sendmessage.js index 97a405dd2..2312507f4 100644 --- a/libtextsecure/sendmessage.js +++ b/libtextsecure/sendmessage.js @@ -9,24 +9,13 @@ window.textsecure.messaging = function() { // message == DataMessage or ContentMessage proto function sendMessageToDevices(timestamp, number, deviceObjectList, message) { - var relay = undefined; - return Promise.all(deviceObjectList.map(function(device) { - if (device.relay !== undefined) { - if (relay === undefined) - relay = device.relay; - else if (relay != device.relay) - return new Promise(function() { - throw new Error("Mismatched relays for number " + number); - }); - } else { - if (relay === undefined) - relay = ""; - else if (relay != "") - return new Promise(function() { - throw new Error("Mismatched relays for number " + number); - }); + var relay = deviceObjectList[0].relay; + for (var i=1; i < deviceObjectList.length; ++i) { + if (deviceObjectList[i].relay !== relay) { + throw new Error("Mismatched relays for number " + number); } - + } + return Promise.all(deviceObjectList.map(function(device) { return textsecure.protocol_wrapper.encryptMessageFor(device, message).then(function(encryptedMsg) { return textsecure.protocol_wrapper.getRegistrationId(device.encodedNumber).then(function(registrationId) { return textsecure.storage.devices.removeTempKeysFromDevice(device.encodedNumber).then(function() {