diff options
author | Christian Grothoff <christian@grothoff.org> | 2022-12-09 13:33:57 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2022-12-09 13:33:57 +0100 |
commit | d1c160d1b9bddfcd6f77148ae8a03944571fec25 (patch) | |
tree | f981900b86fa96e8e0baaa5c00c299d5c924e1dc /src/exchangedb/exchange_do_purse_deposit.sql | |
parent | f9cc76ad3c4d7a8c720e971a1a9cba1bb79fa974 (diff) |
properly handle GONE case on purse deposit
Diffstat (limited to 'src/exchangedb/exchange_do_purse_deposit.sql')
-rw-r--r-- | src/exchangedb/exchange_do_purse_deposit.sql | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/exchangedb/exchange_do_purse_deposit.sql b/src/exchangedb/exchange_do_purse_deposit.sql index cddbd8d4..0ca4126a 100644 --- a/src/exchangedb/exchange_do_purse_deposit.sql +++ b/src/exchangedb/exchange_do_purse_deposit.sql @@ -26,6 +26,7 @@ CREATE OR REPLACE FUNCTION exchange_do_purse_deposit( IN in_reserve_expiration INT8, IN in_now INT8, OUT out_balance_ok BOOLEAN, + OUT out_late BOOLEAN, OUT out_conflict BOOLEAN) LANGUAGE plpgsql AS $$ @@ -75,6 +76,7 @@ THEN THEN -- Deposit exists, but with differences. Not allowed. out_balance_ok=FALSE; + out_late=FALSE; out_conflict=TRUE; RETURN; END IF; @@ -106,6 +108,7 @@ IF NOT FOUND THEN -- Insufficient balance. out_balance_ok=FALSE; + out_late=FALSE; out_conflict=FALSE; RETURN; END IF; @@ -141,6 +144,8 @@ SELECT COALESCE(partner_serial_id,0) IF NOT FOUND THEN + -- Purse was not yet merged. We are done. + out_late=FALSE; RETURN; END IF; @@ -159,6 +164,7 @@ SELECT OR (amount_with_fee_val < balance_val) ) ); IF NOT FOUND THEN + out_late=FALSE; RETURN; END IF; @@ -175,10 +181,13 @@ ON CONFLICT DO NOTHING; IF NOT FOUND THEN - out_conflict=TRUE; + -- Purse already decided, likely expired. + out_late=TRUE; RETURN; END IF; +out_late=FALSE; + IF (my_in_reserve_quota) THEN UPDATE reserves @@ -216,7 +225,7 @@ ELSE IF NOT FOUND THEN - + -- Reserve existed, thus UPDATE instead of INSERT. UPDATE reserves SET current_balance_frac=current_balance_frac+my_amount_frac @@ -240,5 +249,3 @@ END IF; END $$; - - |