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:
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,