commit 3322051a39621448ed4d893a96de465e5ab86e6f
parent 480d1ea4ba7e9c6ec8107e6334124d5bbd1a7c13
Author: Marcello Stanisci <marcello.stanisci@inria.fr>
Date: Tue, 20 Jun 2017 15:00:28 +0200
fix hanging db
Diffstat:
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;
}