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

This commit is contained in:
Christian Grothoff 2020-09-01 23:59:16 +02:00
parent d453c47a74
commit ee4f1c1002
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
2 changed files with 11 additions and 2 deletions

@ -1 +1 @@
Subproject commit 18a39c29726860af58800a28454446154b89832b Subproject commit 0b778cdac372d0b75f3b64501a15a21c9c57f36e

View File

@ -254,11 +254,20 @@ refresh_check_melt (struct MHD_Connection *connection,
&spent)) &spent))
{ {
struct TALER_Amount coin_residual; 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 <= GNUNET_assert (0 <=
TALER_amount_subtract (&coin_residual, TALER_amount_subtract (&spent_already,
&spent, &spent,
&rmc->refresh_session.amount_with_fee)); &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 ( *mhd_ret = reply_melt_insufficient_funds (
connection, connection,
&rmc->refresh_session.coin.coin_pub, &rmc->refresh_session.coin.coin_pub,