From e6d09d25681798a01cc6a61877a0ec4a0f2dca63 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Tue, 9 May 2017 13:33:26 +0200 Subject: handle error code returned by TALER_amount_subtract in new error case TALER_EC_PAYBACK_COIN_BALANCE_NEGATIVE --- src/exchange/taler-exchange-httpd_db.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src/exchange/taler-exchange-httpd_db.c') diff --git a/src/exchange/taler-exchange-httpd_db.c b/src/exchange/taler-exchange-httpd_db.c index 0634e34f6..f53600cc1 100644 --- a/src/exchange/taler-exchange-httpd_db.c +++ b/src/exchange/taler-exchange-httpd_db.c @@ -2402,9 +2402,19 @@ TEH_DB_execute_payback (struct MHD_Connection *connection, return TEH_RESPONSE_reply_internal_db_error (connection, TALER_EC_PAYBACK_HISTORY_DB_ERROR); } - TALER_amount_subtract (&amount, - value, - &spent); + if (GNUNET_SYSERR == + TALER_amount_subtract (&amount, + value, + &spent)) + { + GNUNET_break (0); + TEH_plugin->rollback (TEH_plugin->cls, + session); + TEH_plugin->free_coin_transaction_list (TEH_plugin->cls, + tl); + return TEH_RESPONSE_reply_internal_db_error (connection, + TALER_EC_PAYBACK_COIN_BALANCE_NEGATIVE); + } if ( (0 == amount.fraction) && (0 == amount.value) ) { -- cgit v1.2.3