taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit bf1b350d4410cfc7c3e9ae3a717343c9ef19625a
parent 7ba1f918233aa3068877adfc1d2016ed661b6400
Author: Florian Dold <florian.dold@gmail.com>
Date:   Mon,  9 Mar 2020 14:29:13 +0530

abort exchange update if version does not match

Diffstat:
Msrc/operations/exchanges.ts | 20+++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)

diff --git 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;