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:
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;