merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

commit 3322051a39621448ed4d893a96de465e5ab86e6f
parent 480d1ea4ba7e9c6ec8107e6334124d5bbd1a7c13
Author: Marcello Stanisci <marcello.stanisci@inria.fr>
Date:   Tue, 20 Jun 2017 15:00:28 +0200

fix hanging db

Diffstat:
Msrc/backend/taler-merchant-httpd_refund.c | 10++++++++++
Msrc/backenddb/plugin_merchantdb_postgres.c | 18++++++++----------
2 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/src/backend/taler-merchant-httpd_refund.c b/src/backend/taler-merchant-httpd_refund.c @@ -250,6 +250,16 @@ MH_handler_refund_increase (struct TMH_RequestHandler *rh, " or too big to be paid back"); } + if (GNUNET_SYSERR == res) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Could not commit refund increase\n"); + GNUNET_JSON_parse_free (spec); + return TMH_RESPONSE_reply_internal_error (connection, + TALER_EC_NONE, + "Internal hard db error"); + } + /** * Return to the frontend at this point. The frontend will then return * a "402 Payment required" carrying a "X-Taler-Refund-Url: www" diff --git a/src/backenddb/plugin_merchantdb_postgres.c b/src/backenddb/plugin_merchantdb_postgres.c @@ -2156,6 +2156,7 @@ postgres_increase_refund_for_contract (void *cls, params, &process_deposits_cb, &ctx); + switch (ret) { case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS: @@ -2170,18 +2171,15 @@ postgres_increase_refund_for_contract (void *cls, return GNUNET_SYSERR; default: /* Got one or more deposits */ + if (GNUNET_OK != postgres_commit (cls)) + { + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + "Failed to commit transaction increasing refund\n"); + return GNUNET_SYSERR; + } + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Committed db transaction\n"); return ctx.err; - break; } - - if (GNUNET_OK != postgres_commit (cls)) - { - GNUNET_log (GNUNET_ERROR_TYPE_WARNING, - "Failed to commit transaction increasing refund\n"); - return GNUNET_SYSERR; - } - - return GNUNET_OK; }