From bf1b350d4410cfc7c3e9ae3a717343c9ef19625a Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 9 Mar 2020 14:29:13 +0530 Subject: abort exchange update if version does not match --- src/operations/exchanges.ts | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src/operations') 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; -- cgit v1.2.3