merchant

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

commit d2c40f4e19350efe134aab9be0f8be8f6a5d7bf8
parent 075d09d93c05e7a0a8963d478d32f14dae6bb98e
Author: Christian Grothoff <christian@grothoff.org>
Date:   Mon, 18 Jan 2021 11:34:55 +0100

insert_transfer_details is running its own transaction, no need to create an outer transaction for it

Diffstat:
Msrc/backend/taler-merchant-httpd_private-post-transfers.c | 60+++++++++++++-----------------------------------------------
1 file changed, 13 insertions(+), 47 deletions(-)

diff --git a/src/backend/taler-merchant-httpd_private-post-transfers.c b/src/backend/taler-merchant-httpd_private-post-transfers.c @@ -459,61 +459,27 @@ wire_transfer_cb (void *cls, return; } - for (unsigned int r = 0; r<MAX_RETRIES; r++) - { - TMH_db->preflight (TMH_db->cls); - if (GNUNET_OK != - TMH_db->start (TMH_db->cls, - "insert transaction details")) - { - GNUNET_break (0); - resume_transfer_with_error (ptc, - MHD_HTTP_INTERNAL_SERVER_ERROR, - TALER_EC_GENERIC_DB_START_FAILED, - NULL); - return; - } - /* Ok, exchange answer is acceptable, store it */ - qs = TMH_db->insert_transfer_details (TMH_db->cls, - instance_id, - ptc->exchange_url, - ptc->payto_uri, - &ptc->wtid, - td); - if (0 > qs) - goto retry; - qs = TMH_db->commit (TMH_db->cls); -retry: - if (GNUNET_DB_STATUS_HARD_ERROR == qs) - { - TMH_db->rollback (TMH_db->cls); - /* Always report on hard error as well to enable diagnostics */ - GNUNET_break (GNUNET_DB_STATUS_HARD_ERROR == qs); - resume_transfer_with_error ( - ptc, - MHD_HTTP_INTERNAL_SERVER_ERROR, - TALER_EC_GENERIC_DB_COMMIT_FAILED, - NULL); - return; - } - if (0 <= qs) - break; /* success! */ - /* soft failure, rollback and try again */ - TMH_db->rollback (TMH_db->cls); - } - if (GNUNET_DB_STATUS_SOFT_ERROR == qs) + TMH_db->preflight (TMH_db->cls); + /* Ok, exchange answer is acceptable, store it */ + qs = TMH_db->insert_transfer_details (TMH_db->cls, + instance_id, + ptc->exchange_url, + ptc->payto_uri, + &ptc->wtid, + td); + if (0 > qs) { - TMH_db->rollback (TMH_db->cls); - /* Always report on hard error as well to enable diagnostics */ + /* Always report on DB error as well to enable diagnostics */ GNUNET_break (GNUNET_DB_STATUS_HARD_ERROR == qs); resume_transfer_with_error ( ptc, MHD_HTTP_INTERNAL_SERVER_ERROR, - TALER_EC_GENERIC_DB_SOFT_FAILURE, + (GNUNET_DB_STATUS_HARD_ERROR == qs) + ? TALER_EC_GENERIC_DB_COMMIT_FAILED + : TALER_EC_GENERIC_DB_SOFT_FAILURE, NULL); return; } - /* resume processing, main function will build the response */ resume_transfer_with_response (ptc, 0,