[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [taler-exchange] 03/07: Annotation; error management.
From: |
gnunet |
Subject: |
[GNUnet-SVN] [taler-exchange] 03/07: Annotation; error management. |
Date: |
Fri, 18 May 2018 17:25:15 +0200 |
This is an automated email from the git hooks/post-receive script.
marcello pushed a commit to branch master
in repository exchange.
commit c9758f75f3f3129553fc541ef9334527de93cb6c
Author: Marcello Stanisci <address@hidden>
AuthorDate: Fri May 18 14:49:01 2018 +0200
Annotation; error management.
---
.../taler-exchange-httpd_reserve_withdraw.c | 27 +++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/src/exchange/taler-exchange-httpd_reserve_withdraw.c
b/src/exchange/taler-exchange-httpd_reserve_withdraw.c
index 3f2bc31..ec1a768 100644
--- a/src/exchange/taler-exchange-httpd_reserve_withdraw.c
+++ b/src/exchange/taler-exchange-httpd_reserve_withdraw.c
@@ -48,11 +48,15 @@ reply_reserve_withdraw_insufficient_funds (struct
MHD_Connection *connection,
json_history = TEH_RESPONSE_compile_reserve_history (rh,
&balance);
- if (NULL == json_history)
+ if ((NULL == json_history)
+ /* Address the case where the ptr is not null, but
+ * it fails "internally" to dump as string (= corrupted). */
+ || (0 == json_dumpb (json_history, NULL, 0, 0)))
return TEH_RESPONSE_reply_internal_error (connection,
TALER_EC_WITHDRAW_HISTORY_DB_ERROR_INSUFFICIENT_FUNDS,
"balance calculation failure");
json_balance = TALER_JSON_from_amount (&balance);
+
return TEH_RESPONSE_reply_json_pack (connection,
MHD_HTTP_FORBIDDEN,
"{s:s, s:I, s:o, s:o}",
@@ -279,6 +283,25 @@ withdraw_transaction (void *cls,
TALER_EC_WITHDRAW_AMOUNT_WITHDRAWALS_OVERFLOW);
return GNUNET_DB_STATUS_HARD_ERROR;
}
+
+ #if 0
+ /**
+ * WARNING:
+ *
+ * This check below is useless, as when a reserve gets
+ * closed, the database records that operation's amount
+ * as the _entire_ amount that was left into the reserve.
+ * This means that the closing fee is _included_ in what
+ * the database has, so it makes no sense to further
+ * subtract it from the 'withdraw_total'. On the other
+ * hand, the reserve-closing logic is careful to NOT wire
+ * transfer all the reserve amount back to the bank, but
+ * it does subtract the closing fee first from it.
+ *
+ * NOTE: this if-0'd out chunk of code is left around for
+ * internal review.
+ */
+
if (GNUNET_OK !=
TALER_amount_add (&withdraw_total,
&withdraw_total,
@@ -288,6 +311,7 @@ withdraw_transaction (void *cls,
TALER_EC_WITHDRAW_AMOUNT_WITHDRAWALS_OVERFLOW);
return GNUNET_DB_STATUS_HARD_ERROR;
}
+ #endif
res |= 2;
break;
@@ -323,6 +347,7 @@ withdraw_transaction (void *cls,
if (0 < TALER_amount_cmp (&wc->amount_required,
&balance))
{
+ GNUNET_break_op (0);
*mhd_ret = reply_reserve_withdraw_insufficient_funds (connection,
rh);
TEH_plugin->free_reserve_history (TEH_plugin->cls,
--
To stop receiving notification emails like this one, please contact
address@hidden
- [GNUnet-SVN] [taler-exchange] branch master updated (39a9045 -> fffaf61), gnunet, 2018/05/18
- [GNUnet-SVN] [taler-exchange] 06/07: Make a "payback" bit appear into the history., gnunet, 2018/05/18
- [GNUnet-SVN] [taler-exchange] 01/07: Withdraw after payback., gnunet, 2018/05/18
- [GNUnet-SVN] [taler-exchange] 03/07: Annotation; error management.,
gnunet <=
- [GNUnet-SVN] [taler-exchange] 02/07: double-check reserve is well-behaved., gnunet, 2018/05/18
- [GNUnet-SVN] [taler-exchange] 07/07: set right expected http code., gnunet, 2018/05/18
- [GNUnet-SVN] [taler-exchange] 04/07: diagnostics, gnunet, 2018/05/18
- [GNUnet-SVN] [taler-exchange] 05/07: Ask to withdraw on a expired reserve., gnunet, 2018/05/18