diff options
author | Christian Grothoff <christian@grothoff.org> | 2021-01-18 11:34:55 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2021-01-18 11:34:55 +0100 |
commit | d2c40f4e19350efe134aab9be0f8be8f6a5d7bf8 (patch) | |
tree | f686306d2c5751f16e4b20c9e386306a988b64f8 /src | |
parent | 075d09d93c05e7a0a8963d478d32f14dae6bb98e (diff) | |
download | merchant-d2c40f4e19350efe134aab9be0f8be8f6a5d7bf8.tar.gz merchant-d2c40f4e19350efe134aab9be0f8be8f6a5d7bf8.tar.bz2 merchant-d2c40f4e19350efe134aab9be0f8be8f6a5d7bf8.zip |
insert_transfer_details is running its own transaction, no need to create an outer transaction for it
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/taler-merchant-httpd_private-post-transfers.c | 60 |
1 files 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 index dda8bf11..80998e85 100644 --- 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, |