summaryrefslogtreecommitdiff
path: root/src/backend/taler-merchant-httpd_private-post-instances.c
diff options
context:
space:
mode:
authorChristian Grothoff <grothoff@gnunet.org>2023-11-24 09:51:53 +0100
committerChristian Grothoff <grothoff@gnunet.org>2023-11-24 09:51:53 +0100
commit6fa958a3cec156bc0eb89ddfae8b150d7400d2be (patch)
tree7b1f970e24cd24aee0c584757ccf300ebc541c8c /src/backend/taler-merchant-httpd_private-post-instances.c
parentf0e6846a4f5f398faa8a7bbbcfad5096fdd4352b (diff)
downloadmerchant-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.c46
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)