summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcello Stanisci <marcello.stanisci@inria.fr>2017-06-20 15:00:28 +0200
committerMarcello Stanisci <marcello.stanisci@inria.fr>2017-06-20 15:00:28 +0200
commit3322051a39621448ed4d893a96de465e5ab86e6f (patch)
tree9b6f9ced4f93d3cc4519732a5960bdc5f1ebc9b2
parent480d1ea4ba7e9c6ec8107e6334124d5bbd1a7c13 (diff)
downloadmerchant-3322051a39621448ed4d893a96de465e5ab86e6f.tar.gz
merchant-3322051a39621448ed4d893a96de465e5ab86e6f.tar.bz2
merchant-3322051a39621448ed4d893a96de465e5ab86e6f.zip
fix hanging db
-rw-r--r--src/backend/taler-merchant-httpd_refund.c10
-rw-r--r--src/backenddb/plugin_merchantdb_postgres.c18
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;
}