[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-wallet-core] branch master updated: do not apply the same refresh
From: |
gnunet |
Subject: |
[taler-wallet-core] branch master updated: do not apply the same refresh twice |
Date: |
Sun, 19 Jan 2020 20:41:55 +0100 |
This is an automated email from the git hooks/post-receive script.
dold pushed a commit to branch master
in repository wallet-core.
The following commit(s) were added to refs/heads/master by this push:
new e124e05d do not apply the same refresh twice
e124e05d is described below
commit e124e05d531af11815e403f3547e167afb80cae6
Author: Florian Dold <address@hidden>
AuthorDate: Sun Jan 19 20:41:51 2020 +0100
do not apply the same refresh twice
---
src/operations/refresh.ts | 2 +-
src/operations/refund.ts | 30 +++++++++++++++++++++++++-----
2 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/src/operations/refresh.ts b/src/operations/refresh.ts
index 418ec046..b53baf39 100644
--- a/src/operations/refresh.ts
+++ b/src/operations/refresh.ts
@@ -238,7 +238,7 @@ async function refreshMelt(
rc: refreshSession.hash,
value_with_fee: Amounts.toString(refreshSession.amountRefreshInput),
};
- logger.trace("melt request:", meltReq);
+ logger.trace(`melt request for coin:`, meltReq);
const resp = await ws.http.postJson(reqUrl.href, meltReq);
if (resp.status !== 200) {
console.log(`got status ${resp.status} for refresh/melt`);
diff --git a/src/operations/refund.ts b/src/operations/refund.ts
index 92e9204d..2fb3a239 100644
--- a/src/operations/refund.ts
+++ b/src/operations/refund.ts
@@ -54,6 +54,9 @@ import { randomBytes } from "../crypto/primitives/nacl-fast";
import { encodeCrock } from "../crypto/talerCrypto";
import { HttpResponseStatus } from "../util/http";
import { getTimestampNow } from "../util/time";
+import { Logger } from "../util/logging";
+
+const logger = new Logger("refund.ts");
async function incrementPurchaseQueryRefundRetry(
ws: InternalWalletState,
@@ -468,15 +471,24 @@ async function processPurchaseApplyRefundImpl(
return;
}
refreshCoinsMap[c.coinPub] = { coinPub: c.coinPub };
+ logger.trace(`commiting refund ${perm.merchant_sig} to coin
${c.coinPub}`);
+ logger.trace(`coin amount before is
${Amounts.toString(c.currentAmount)}`)
+ logger.trace(`refund amount (via merchant) is ${perm.refund_amount}`);
+ logger.trace(`refund fee (via merchant) is ${perm.refund_fee}`);
const refundAmount = Amounts.parseOrThrow(perm.refund_amount);
const refundFee = Amounts.parseOrThrow(perm.refund_fee);
c.status = CoinStatus.Dormant;
c.currentAmount = Amounts.add(c.currentAmount, refundAmount).amount;
c.currentAmount = Amounts.sub(c.currentAmount, refundFee).amount;
+ logger.trace(`coin amount after is
${Amounts.toString(c.currentAmount)}`)
await tx.put(Stores.coins, c);
};
for (const pk of Object.keys(newRefundsFailed)) {
+ if (p.refundState.refundsDone[pk]) {
+ // We already processed this one.
+ break;
+ }
const r = newRefundsFailed[pk];
groups[r.refundGroupId] = true;
delete p.refundState.refundsPending[pk];
@@ -484,6 +496,10 @@ async function processPurchaseApplyRefundImpl(
}
for (const pk of Object.keys(newRefundsDone)) {
+ if (p.refundState.refundsDone[pk]) {
+ // We already processed this one.
+ break;
+ }
const r = newRefundsDone[pk];
groups[r.refundGroupId] = true;
delete p.refundState.refundsPending[pk];
@@ -516,11 +532,15 @@ async function processPurchaseApplyRefundImpl(
allRefundsProcessed = true;
}
await tx.put(Stores.purchases, p);
- await createRefreshGroup(
- tx,
- Object.values(refreshCoinsMap),
- RefreshReason.Refund,
- );
+ const coinsPubsToBeRefreshed = Object.values(refreshCoinsMap);
+ if (coinsPubsToBeRefreshed.length > 0)
+ {
+ await createRefreshGroup(
+ tx,
+ coinsPubsToBeRefreshed,
+ RefreshReason.Refund,
+ );
+ }
},
);
if (allRefundsProcessed) {
--
To stop receiving notification emails like this one, please contact
address@hidden.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-wallet-core] branch master updated: do not apply the same refresh twice,
gnunet <=