diff options
author | Florian Dold <florian.dold@gmail.com> | 2020-03-09 14:29:13 +0530 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2020-03-09 14:29:13 +0530 |
commit | bf1b350d4410cfc7c3e9ae3a717343c9ef19625a (patch) | |
tree | 93db95280047db412c50fb68030853449beffe68 | |
parent | 7ba1f918233aa3068877adfc1d2016ed661b6400 (diff) |
abort exchange update if version does not match
-rw-r--r-- | src/operations/exchanges.ts | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/operations/exchanges.ts b/src/operations/exchanges.ts index ca8c94ecc..89f89ec10 100644 --- a/src/operations/exchanges.ts +++ b/src/operations/exchanges.ts @@ -39,8 +39,12 @@ import { OperationFailedAndReportedError, guardOperationException, } from "./errors"; -import { WALLET_CACHE_BREAKER_CLIENT_VERSION } from "./versions"; +import { + WALLET_CACHE_BREAKER_CLIENT_VERSION, + WALLET_EXCHANGE_PROTOCOL_VERSION, +} from "./versions"; import { getTimestampNow } from "../util/time"; +import { compare } from "../util/libtoolVersion"; async function denominationRecordFromKeys( ws: InternalWalletState, @@ -161,6 +165,20 @@ async function updateExchangeWithKeys( throw new OperationFailedAndReportedError(m); } + const versionRes = compare(WALLET_EXCHANGE_PROTOCOL_VERSION, protocolVersion); + if (versionRes?.compatible != true) { + const m = "exchange protocol version not compatible with wallet"; + await setExchangeError(ws, baseUrl, { + type: "protocol-incompatible", + details: { + exchangeProtocolVersion: protocolVersion, + walletProtocolVersion: WALLET_EXCHANGE_PROTOCOL_VERSION, + }, + message: m, + }); + throw new OperationFailedAndReportedError(m); + } + const currency = Amounts.parseOrThrow(exchangeKeysJson.denoms[0].value) .currency; |