[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-exchange] branch master updated: -fix purse merge when done again
From: |
gnunet |
Subject: |
[taler-exchange] branch master updated: -fix purse merge when done against non-existing reserve |
Date: |
Wed, 24 Aug 2022 09:39:12 +0200 |
This is an automated email from the git hooks/post-receive script.
grothoff pushed a commit to branch master
in repository exchange.
The following commit(s) were added to refs/heads/master by this push:
new 4edb5050 -fix purse merge when done against non-existing reserve
4edb5050 is described below
commit 4edb5050d9904ece8520a44bd241328588584f46
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Wed Aug 24 09:38:53 2022 +0200
-fix purse merge when done against non-existing reserve
---
src/exchange/taler-exchange-httpd_reserves_purse.c | 5 ++-
src/exchangedb/procedures.sql | 51 +++++++++++++---------
2 files changed, 34 insertions(+), 22 deletions(-)
diff --git a/src/exchange/taler-exchange-httpd_reserves_purse.c
b/src/exchange/taler-exchange-httpd_reserves_purse.c
index 930acf54..b1002a75 100644
--- a/src/exchange/taler-exchange-httpd_reserves_purse.c
+++ b/src/exchange/taler-exchange-httpd_reserves_purse.c
@@ -380,7 +380,10 @@ purse_transaction (void *cls,
GNUNET_free (partner_url);
return GNUNET_DB_STATUS_HARD_ERROR;
}
- if (no_reserve)
+ if ( (no_reserve) &&
+ ( (TALER_WAMF_MODE_CREATE_FROM_PURSE_QUOTA
+ == rpc->flags) ||
+ (! TALER_amount_is_zero (&rpc->gf->fees.purse)) ) )
{
*mhd_ret
= TALER_MHD_REPLY_JSON_PACK (
diff --git a/src/exchangedb/procedures.sql b/src/exchangedb/procedures.sql
index 0c21ae41..38f346c0 100644
--- a/src/exchangedb/procedures.sql
+++ b/src/exchangedb/procedures.sql
@@ -1850,17 +1850,16 @@ PERFORM
FROM exchange.reserves
WHERE reserve_pub=in_reserve_pub;
-IF NOT FOUND
-THEN
- out_no_reserve=TRUE;
- out_no_funds=TRUE;
- RETURN;
-END IF;
-out_no_reserve=FALSE;
+out_no_reserve = NOT FOUND;
IF (in_reserve_quota)
THEN
-- Increment active purses per reserve (and check this is allowed)
+ IF (out_no_reserve)
+ THEN
+ out_no_funds=TRUE;
+ RETURN;
+ END IF;
UPDATE reserves
SET purses_active=purses_active+1
WHERE reserve_pub=in_reserve_pub
@@ -1872,28 +1871,38 @@ THEN
END IF;
ELSE
-- UPDATE reserves balance (and check if balance is enough to pay the fee)
- UPDATE reserves
- SET
- current_balance_frac=current_balance_frac-in_purse_fee_frac
- + CASE
+ IF (out_no_reserve)
+ THEN
+ IF ( (0 != in_purse_fee_val) OR
+ (0 != in_purse_fee_frac) )
+ THEN
+ out_no_funds=TRUE;
+ RETURN;
+ END IF;
+ ELSE
+ UPDATE reserves
+ SET
+ current_balance_frac=current_balance_frac-in_purse_fee_frac
+ + CASE
WHEN current_balance_frac < in_purse_fee_frac
THEN 100000000
ELSE 0
END,
- current_balance_val=current_balance_val-in_purse_fee_val
- - CASE
+ current_balance_val=current_balance_val-in_purse_fee_val
+ - CASE
WHEN current_balance_frac < in_purse_fee_frac
THEN 1
ELSE 0
END
- WHERE reserve_pub=in_reserve_pub
- AND ( (current_balance_val > in_purse_fee_val) OR
- ( (current_balance_frac >= in_purse_fee_frac) AND
- (current_balance_val >= in_purse_fee_val) ) );
- IF NOT FOUND
- THEN
- out_no_funds=TRUE;
- RETURN;
+ WHERE reserve_pub=in_reserve_pub
+ AND ( (current_balance_val > in_purse_fee_val) OR
+ ( (current_balance_frac >= in_purse_fee_frac) AND
+ (current_balance_val >= in_purse_fee_val) ) );
+ IF NOT FOUND
+ THEN
+ out_no_funds=TRUE;
+ RETURN;
+ END IF;
END IF;
END IF;
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-exchange] branch master updated: -fix purse merge when done against non-existing reserve,
gnunet <=