From 7815ccb8c2cc74d44eb214e0c1f14833c5638b45 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 12 Aug 2020 21:58:23 +0200 Subject: allow claim token match if we have a claimed but unpaid contract --- src/backend/taler-merchant-httpd_get-orders-ID.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/backend/taler-merchant-httpd_get-orders-ID.c') diff --git a/src/backend/taler-merchant-httpd_get-orders-ID.c b/src/backend/taler-merchant-httpd_get-orders-ID.c index 5bc58213..25e96310 100644 --- a/src/backend/taler-merchant-httpd_get-orders-ID.c +++ b/src/backend/taler-merchant-httpd_get-orders-ID.c @@ -913,6 +913,7 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh, struct GetOrderData *god = hc->ctx; const char *order_id = hc->infix; enum GNUNET_DB_QueryStatus qs; + bool contract_match = false; if (NULL == god) { @@ -1066,9 +1067,12 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh, TALER_EC_INTERNAL_LOGIC_ERROR, "Could not hash contract terms"); } - if (0 != - GNUNET_memcmp (&h, - &god->h_contract_terms)) + contract_match = (0 == + GNUNET_memcmp (&h, + &god->h_contract_terms)); + if ( (GNUNET_NO == + GNUNET_is_zero (&god->h_contract_terms)) && + (! contract_match) ) { GNUNET_break_op (0); return TALER_MHD_reply_with_error (connection, @@ -1078,7 +1082,8 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh, } } - if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qs) + if ( (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qs) || + (! contract_match) ) { struct TALER_ClaimTokenP db_claim_token; -- cgit v1.2.3