abort exchange update if version does not match

This commit is contained in:
Florian Dold 2020-03-09 14:29:13 +05:30
parent 7ba1f91823
commit bf1b350d44
No known key found for this signature in database
GPG Key ID: D2E4F00F29D02A4B

View File

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