diff options
author | Christian Grothoff <christian@grothoff.org> | 2021-04-02 15:25:14 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2021-04-02 15:25:14 +0200 |
commit | 9bec95fe28aa83f03f1a5bac25201b037e9564d3 (patch) | |
tree | 03cef263183879adef6d6cf58d36002f51e7a6e0 /src/backend/taler-merchant-httpd_private-post-instances.c | |
parent | fd1cac5c4dd4dc121062a214e19bbd9585af943d (diff) |
properly handle instance already exists case (#6812)
Diffstat (limited to 'src/backend/taler-merchant-httpd_private-post-instances.c')
-rw-r--r-- | src/backend/taler-merchant-httpd_private-post-instances.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/backend/taler-merchant-httpd_private-post-instances.c b/src/backend/taler-merchant-httpd_private-post-instances.c index d251a9d0..fbfb13c5 100644 --- a/src/backend/taler-merchant-httpd_private-post-instances.c +++ b/src/backend/taler-merchant-httpd_private-post-instances.c @@ -123,6 +123,8 @@ free_mi (struct TMH_MerchantInstance *mi) } GNUNET_free (mi->settings.id); GNUNET_free (mi->settings.name); + json_decref (mi->settings.address); + json_decref (mi->settings.jurisdiction); GNUNET_free (mi); } @@ -448,9 +450,18 @@ TMH_private_post_instances (const struct TMH_RequestHandler *rh, &mi->auth); if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != qs) { - GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs); + MHD_RESULT ret; + TMH_db->rollback (TMH_db->cls); - goto retry; + if (GNUNET_DB_STATUS_SOFT_ERROR == qs) + goto retry; + ret = TALER_MHD_reply_with_error (connection, + MHD_HTTP_CONFLICT, + TALER_EC_MERCHANT_PRIVATE_POST_INSTANCES_ALREADY_EXISTS, + is.id); + GNUNET_JSON_parse_free (spec); + free_mi (mi); + return ret; } for (struct TMH_WireMethod *wm = wm_head; NULL != wm; |