summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2020-07-24 14:52:14 +0530
committerFlorian Dold <florian.dold@gmail.com>2020-07-24 14:52:14 +0530
commit880f335ee648743f6e58918b5a62b42c4f0962bb (patch)
tree4bdb5214d74e666281a0e107d9adf097abd5443c
parent530f0b3f2e6a44840a2069b84ac9e5a438d01e8e (diff)
downloadwallet-core-880f335ee648743f6e58918b5a62b42c4f0962bb.tar.gz
wallet-core-880f335ee648743f6e58918b5a62b42c4f0962bb.tar.bz2
wallet-core-880f335ee648743f6e58918b5a62b42c4f0962bb.zip
fix excessive retries
-rw-r--r--src/operations/reserves.ts18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/operations/reserves.ts b/src/operations/reserves.ts
index 6045b61d2..fdc35bb14 100644
--- a/src/operations/reserves.ts
+++ b/src/operations/reserves.ts
@@ -465,14 +465,14 @@ async function incrementReserveRetry(
async function updateReserve(
ws: InternalWalletState,
reservePub: string,
-): Promise<void> {
+): Promise<{ ready: boolean }> {
const reserve = await ws.db.get(Stores.reserves, reservePub);
if (!reserve) {
throw Error("reserve not in db");
}
if (reserve.reserveStatus !== ReserveRecordStatus.QUERYING_STATUS) {
- return;
+ return { ready: true };
}
const resp = await ws.http.get(
@@ -493,7 +493,7 @@ async function updateReserve(
reservePub,
});
await incrementReserveRetry(ws, reservePub, undefined);
- return;
+ return { ready: false };
} else {
throwUnexpectedRequestError(resp, result.talerErrorResponse);
}
@@ -562,6 +562,7 @@ async function updateReserve(
},
);
ws.notify({ type: NotificationType.ReserveUpdated });
+ return { ready: true };
}
async function processReserveImpl(
@@ -590,9 +591,14 @@ async function processReserveImpl(
case ReserveRecordStatus.REGISTERING_BANK:
await processReserveBankStatus(ws, reservePub);
return await processReserveImpl(ws, reservePub, true);
- case ReserveRecordStatus.QUERYING_STATUS:
- await updateReserve(ws, reservePub);
- return await processReserveImpl(ws, reservePub, true);
+ case ReserveRecordStatus.QUERYING_STATUS: {
+ const res = await updateReserve(ws, reservePub);
+ if (res.ready) {
+ return await processReserveImpl(ws, reservePub, true);
+ } else {
+ break;
+ }
+ }
case ReserveRecordStatus.WITHDRAWING:
await depleteReserve(ws, reservePub);
break;