diff options
author | Marcello Stanisci <marcello.stanisci@inria.fr> | 2017-06-20 15:00:28 +0200 |
---|---|---|
committer | Marcello Stanisci <marcello.stanisci@inria.fr> | 2017-06-20 15:00:28 +0200 |
commit | 3322051a39621448ed4d893a96de465e5ab86e6f (patch) | |
tree | 9b6f9ced4f93d3cc4519732a5960bdc5f1ebc9b2 | |
parent | 480d1ea4ba7e9c6ec8107e6334124d5bbd1a7c13 (diff) | |
download | merchant-3322051a39621448ed4d893a96de465e5ab86e6f.tar.gz merchant-3322051a39621448ed4d893a96de465e5ab86e6f.tar.bz2 merchant-3322051a39621448ed4d893a96de465e5ab86e6f.zip |
fix hanging db
-rw-r--r-- | src/backend/taler-merchant-httpd_refund.c | 10 | ||||
-rw-r--r-- | src/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 index 2504333e..229bbe50 100644 --- 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 index 679b0552..dd45163e 100644 --- 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; } |