merchant

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

commit 87acbea142ed659823c249320e64c45ecba1882b
parent 32653fe3d459890a21eafe7d913d6a6c7dfc718f
Author: Christian Grothoff <christian@grothoff.org>
Date:   Mon, 13 Jul 2026 00:26:06 +0200

handle DB errors more nicely

Diffstat:
Msrc/backend/taler-merchant-httpd_patch-private-orders-ORDER_ID-forget.c | 42+++++++++++++++++++++++++++++-------------
1 file changed, 29 insertions(+), 13 deletions(-)

diff --git a/src/backend/taler-merchant-httpd_patch-private-orders-ORDER_ID-forget.c b/src/backend/taler-merchant-httpd_patch-private-orders-ORDER_ID-forget.c @@ -217,25 +217,41 @@ TMH_private_patch_orders_ID_forget (const struct TMH_RequestHandler *rh, order_id, contract_terms); json_decref (contract_terms); - if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != qs) - { - TALER_MERCHANTDB_rollback (TMH_db); - if (GNUNET_DB_STATUS_SOFT_ERROR != qs) - break; - } - else + switch (qs) { + case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT: qs = TALER_MERCHANTDB_commit (TMH_db); - if (GNUNET_DB_STATUS_SOFT_ERROR != qs) - break; + break; + case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS: + TALER_MERCHANTDB_rollback (TMH_db); + return TALER_MHD_reply_with_error ( + connection, + MHD_HTTP_NOT_FOUND, + TALER_EC_MERCHANT_GENERIC_ORDER_UNKNOWN, + order_id); + case GNUNET_DB_STATUS_SOFT_ERROR: + TALER_MERCHANTDB_rollback (TMH_db); + continue; + case GNUNET_DB_STATUS_HARD_ERROR: + GNUNET_break (0); + TALER_MERCHANTDB_rollback (TMH_db); + return TALER_MHD_reply_with_error ( + connection, + MHD_HTTP_INTERNAL_SERVER_ERROR, + TALER_EC_GENERIC_DB_STORE_FAILED, + NULL); } + if (GNUNET_DB_STATUS_SOFT_ERROR != qs) + break; } if (0 > qs) { - return TALER_MHD_reply_with_error (connection, - MHD_HTTP_INTERNAL_SERVER_ERROR, - TALER_EC_GENERIC_DB_COMMIT_FAILED, - NULL); + GNUNET_break (0); + return TALER_MHD_reply_with_error ( + connection, + MHD_HTTP_INTERNAL_SERVER_ERROR, + TALER_EC_GENERIC_DB_COMMIT_FAILED, + NULL); } return TALER_MHD_reply_static (connection,