From 95c71daf5ee1954342490feabb6ec6220fa3f3e8 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sat, 16 Oct 2021 18:42:39 +0200 Subject: handle new 202 accepted status code on withdraw in client logic --- src/lib/exchange_api_withdraw2.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'src/lib/exchange_api_withdraw2.c') diff --git a/src/lib/exchange_api_withdraw2.c b/src/lib/exchange_api_withdraw2.c index c8a959688..330f93d74 100644 --- a/src/lib/exchange_api_withdraw2.c +++ b/src/lib/exchange_api_withdraw2.c @@ -95,7 +95,7 @@ struct TALER_EXCHANGE_Withdraw2Handle * @param json reply from the exchange * @return #GNUNET_OK on success, #GNUNET_SYSERR on errors */ -static int +static enum GNUNET_GenericReturnValue reserve_withdraw_ok (struct TALER_EXCHANGE_Withdraw2Handle *wh, const json_t *json) { @@ -142,7 +142,7 @@ reserve_withdraw_ok (struct TALER_EXCHANGE_Withdraw2Handle *wh, * @param json reply from the exchange * @return #GNUNET_OK on success, #GNUNET_SYSERR on errors */ -static int +static enum GNUNET_GenericReturnValue reserve_withdraw_payment_required ( struct TALER_EXCHANGE_Withdraw2Handle *wh, const json_t *json) @@ -269,6 +269,28 @@ handle_reserve_withdraw_finished (void *cls, GNUNET_assert (NULL == wh->cb); TALER_EXCHANGE_withdraw2_cancel (wh); return; + case MHD_HTTP_ACCEPTED: + /* only validate reply is well-formed */ + { + uint64_t ptu; + struct GNUNET_JSON_Specification spec[] = { + GNUNET_JSON_spec_uint64 ("payment_target_uuid", + &ptu), + GNUNET_JSON_spec_end () + }; + + if (GNUNET_OK != + GNUNET_JSON_parse (j, + spec, + NULL, NULL)) + { + GNUNET_break_op (0); + hr.http_status = 0; + hr.ec = TALER_EC_GENERIC_REPLY_MALFORMED; + break; + } + } + break; case MHD_HTTP_BAD_REQUEST: /* This should never happen, either us or the exchange is buggy (or API version conflict); just pass JSON reply to the application */ -- cgit v1.2.3