exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

commit ee4f1c1002f84118b7f0de592e505d3915437ad5
parent d453c47a74e521b2887e214a7c35c96c3663d0bf
Author: Christian Grothoff <christian@grothoff.org>
Date:   Tue,  1 Sep 2020 23:59:16 +0200

fix #6553: compute residual coin value correctly in melt conflict response

Diffstat:
Msrc/exchange/taler-exchange-httpd_melt.c | 11++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/exchange/taler-exchange-httpd_melt.c b/src/exchange/taler-exchange-httpd_melt.c @@ -254,11 +254,20 @@ refresh_check_melt (struct MHD_Connection *connection, &spent)) { struct TALER_Amount coin_residual; + struct TALER_Amount spent_already; + /* First subtract the melt cost from 'spent' to + compute the total amount already spent of the coin */ GNUNET_assert (0 <= - TALER_amount_subtract (&coin_residual, + TALER_amount_subtract (&spent_already, &spent, &rmc->refresh_session.amount_with_fee)); + /* The residual coin value is the original coin value minus + what we have spent (before the melt) */ + GNUNET_assert (0 <= + TALER_amount_subtract (&coin_residual, + &rmc->coin_value, + &spent_already)); *mhd_ret = reply_melt_insufficient_funds ( connection, &rmc->refresh_session.coin.coin_pub,