commit 12736ba7e57a3ccbb04cad15d342459ca706eed6
parent 099a7a071b78be5a87a0366922dc012040cb37de
Author: Christian Grothoff <grothoff@gnunet.org>
Date: Sat, 14 Feb 2026 22:26:21 +0100
untested fix for #11054
Diffstat:
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/src/backend/taler-merchant-httpd_private-get-orders-ID.c b/src/backend/taler-merchant-httpd_private-get-orders-ID.c
@@ -306,6 +306,11 @@ struct GetOrderRequestContext
struct TALER_Amount deposit_fees_total;
/**
+ * Total amount in deposit fees cancelled due to refunds for all coins.
+ */
+ struct TALER_Amount deposit_fees_refunded_total;
+
+ /**
* Total value of the coins that the exchange deposited into our bank
* account (confirmed or unconfirmed), including deposit fees.
*/
@@ -1247,9 +1252,9 @@ process_refunds_cb (
}
GNUNET_assert (
0 <=
- TALER_amount_subtract (&gorc->deposit_fees_total,
- &gorc->deposit_fees_total,
- &tq->deposit_fee));
+ TALER_amount_add (&gorc->deposit_fees_refunded_total,
+ &gorc->deposit_fees_refunded_total,
+ &tq->deposit_fee));
}
if (GNUNET_OK !=
TALER_amount_cmp_currency (
@@ -1395,6 +1400,9 @@ phase_check_deposits (struct GetOrderRequestContext *gorc)
GNUNET_assert (GNUNET_OK ==
TALER_amount_set_zero (gorc->contract_amount.currency,
&gorc->deposit_fees_total));
+ GNUNET_assert (GNUNET_OK ==
+ TALER_amount_set_zero (gorc->contract_amount.currency,
+ &gorc->deposit_fees_refunded_total));
TMH_db->lookup_deposits_by_order (TMH_db->cls,
gorc->order_serial,
&deposit_cb,
@@ -1546,6 +1554,12 @@ phase_check_local_transfers (struct GetOrderRequestContext *gorc)
"refund exceeds contract value"));
return;
}
+ GNUNET_assert (
+ 0 <=
+ TALER_amount_add (&expect_total,
+ &expect_total,
+ &gorc->deposit_fees_refunded_total));
+
if (0 >
TALER_amount_subtract (&expect_total,
&expect_total,