From 6bcb25991905b09d8fc4b8fc0f9e15f5fd1b9457 Mon Sep 17 00:00:00 2001 From: Mikunj Date: Mon, 17 Dec 2018 09:45:26 +1100 Subject: [PATCH] Added PoW error. --- js/models/messages.js | 3 ++- libtextsecure/errors.js | 16 ++++++++++++++++ libtextsecure/outgoing_message.js | 2 ++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/js/models/messages.js b/js/models/messages.js index d04b78608..e3f568e7f 100644 --- a/js/models/messages.js +++ b/js/models/messages.js @@ -846,7 +846,8 @@ e.name === 'OutgoingMessageError' || e.name === 'SendMessageNetworkError' || e.name === 'SignedPreKeyRotationError' || - e.name === 'OutgoingIdentityKeyError' + e.name === 'OutgoingIdentityKeyError' || + e.name === 'PoWError' ); }, diff --git a/libtextsecure/errors.js b/libtextsecure/errors.js index 66cf29392..f98b28b61 100644 --- a/libtextsecure/errors.js +++ b/libtextsecure/errors.js @@ -127,6 +127,21 @@ } inherit(Error, UnregisteredUserError); + function PoWError(number, error) { + // eslint-disable-next-line prefer-destructuring + this.number = number.split('.')[0]; + + ReplayableError.call(this, { + name: 'PoWError', + message: 'Failed to calculate PoW', + }); + + if (error) { + appendStack(this, error); + } + } + inherit(ReplayableError, PoWError); + window.textsecure.UnregisteredUserError = UnregisteredUserError; window.textsecure.SendMessageNetworkError = SendMessageNetworkError; window.textsecure.IncomingIdentityKeyError = IncomingIdentityKeyError; @@ -135,4 +150,5 @@ window.textsecure.OutgoingMessageError = OutgoingMessageError; window.textsecure.MessageError = MessageError; window.textsecure.SignedPreKeyRotationError = SignedPreKeyRotationError; + window.textsecure.PoWError = PoWError; })(); diff --git a/libtextsecure/outgoing_message.js b/libtextsecure/outgoing_message.js index e949059b9..9e702a906 100644 --- a/libtextsecure/outgoing_message.js +++ b/libtextsecure/outgoing_message.js @@ -195,6 +195,8 @@ OutgoingMessage.prototype = { throw new textsecure.UnregisteredUserError(number, e); } throw new textsecure.SendMessageNetworkError(number, '', e, timestamp); + } else if (e.name === 'TimedOutError') { + throw new textsecure.PoWError(number, e); } throw e; }