diff options
author | Christian Grothoff <grothoff@gnunet.org> | 2023-11-24 09:51:53 +0100 |
---|---|---|
committer | Christian Grothoff <grothoff@gnunet.org> | 2023-11-24 09:51:53 +0100 |
commit | 6fa958a3cec156bc0eb89ddfae8b150d7400d2be (patch) | |
tree | 7b1f970e24cd24aee0c584757ccf300ebc541c8c /src/backend/taler-merchant-httpd_private-post-instances.c | |
parent | f0e6846a4f5f398faa8a7bbbcfad5096fdd4352b (diff) | |
download | merchant-6fa958a3cec156bc0eb89ddfae8b150d7400d2be.tar.gz merchant-6fa958a3cec156bc0eb89ddfae8b150d7400d2be.tar.bz2 merchant-6fa958a3cec156bc0eb89ddfae8b150d7400d2be.zip |
address misc. FIXMEs
Diffstat (limited to 'src/backend/taler-merchant-httpd_private-post-instances.c')
-rw-r--r-- | src/backend/taler-merchant-httpd_private-post-instances.c | 46 |
1 files changed, 33 insertions, 13 deletions
diff --git a/src/backend/taler-merchant-httpd_private-post-instances.c b/src/backend/taler-merchant-httpd_private-post-instances.c index bc87ab41..396008c8 100644 --- a/src/backend/taler-merchant-httpd_private-post-instances.c +++ b/src/backend/taler-merchant-httpd_private-post-instances.c @@ -304,21 +304,41 @@ TMH_private_post_instances (const struct TMH_RequestHandler *rh, &mi->merchant_priv, &mi->settings, &mi->auth); - if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != qs) + switch (qs) { - MHD_RESULT ret; + case GNUNET_DB_STATUS_HARD_ERROR: + { + MHD_RESULT ret; - TMH_db->rollback (TMH_db->cls); - if (GNUNET_DB_STATUS_SOFT_ERROR == qs) - goto retry; - GNUNET_break (0); // FIXME: distinguish better by qs - ret = TALER_MHD_reply_with_error (connection, - MHD_HTTP_CONFLICT, - TALER_EC_MERCHANT_PRIVATE_POST_INSTANCES_ALREADY_EXISTS, - is.id); - mi->rc = 1; - TMH_instance_decref (mi); - return ret; + TMH_db->rollback (TMH_db->cls); + GNUNET_break (0); + ret = TALER_MHD_reply_with_error (connection, + MHD_HTTP_INTERNAL_SERVER_ERROR, + TALER_EC_GENERIC_DB_STORE_FAILED, + is.id); + mi->rc = 1; + TMH_instance_decref (mi); + return ret; + } + case GNUNET_DB_STATUS_SOFT_ERROR: + goto retry; + case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS: + { + MHD_RESULT ret; + + TMH_db->rollback (TMH_db->cls); + GNUNET_break (0); + ret = TALER_MHD_reply_with_error (connection, + MHD_HTTP_CONFLICT, + TALER_EC_MERCHANT_PRIVATE_POST_INSTANCES_ALREADY_EXISTS, + is.id); + mi->rc = 1; + TMH_instance_decref (mi); + return ret; + } + case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT: + /* handled below */ + break; } qs = TMH_db->commit (TMH_db->cls); if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qs) |