diff options
author | Jonathan Buchanan <jonathan.russ.buchanan@gmail.com> | 2020-07-29 01:03:44 -0400 |
---|---|---|
committer | Jonathan Buchanan <jonathan.russ.buchanan@gmail.com> | 2020-07-29 01:03:44 -0400 |
commit | 9755a40ef68b78039293c8505fb0910d42affa4e (patch) | |
tree | 2b4c08cf76ce088a53ad07dd71c1a294dd40fbd4 /src/backend/taler-merchant-httpd_post-orders-ID-claim.c | |
parent | b54d6b0552a84ed790e1faa5cbe9e0a66a9bc702 (diff) | |
download | merchant-9755a40ef68b78039293c8505fb0910d42affa4e.tar.gz merchant-9755a40ef68b78039293c8505fb0910d42affa4e.tar.bz2 merchant-9755a40ef68b78039293c8505fb0910d42affa4e.zip |
remove claim_token from insert_contract_terms and return it from lookup_order
Diffstat (limited to 'src/backend/taler-merchant-httpd_post-orders-ID-claim.c')
-rw-r--r-- | src/backend/taler-merchant-httpd_post-orders-ID-claim.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/backend/taler-merchant-httpd_post-orders-ID-claim.c b/src/backend/taler-merchant-httpd_post-orders-ID-claim.c index 5c8fa540..e306e5ca 100644 --- a/src/backend/taler-merchant-httpd_post-orders-ID-claim.c +++ b/src/backend/taler-merchant-httpd_post-orders-ID-claim.c @@ -42,6 +42,7 @@ * @param instance_id instance to claim order at * @param order_id order to claim * @param nonce nonce to use for the claim + * @param claim_token the token that should be used to verify the claim * @param[out] contract_terms set to the resulting contract terms * (for any non-negative result; * @return transaction status code @@ -54,8 +55,10 @@ static enum GNUNET_DB_QueryStatus claim_order (const char *instance_id, const char *order_id, const char *nonce, + const struct TALER_ClaimTokenP *claim_token, json_t **contract_terms) { + struct TALER_ClaimTokenP order_ct; enum GNUNET_DB_QueryStatus qs; if (GNUNET_OK != @@ -86,6 +89,7 @@ claim_order (const char *instance_id, qs = TMH_db->lookup_order (TMH_db->cls, instance_id, order_id, + &order_ct, contract_terms); if (0 >= qs) { @@ -97,6 +101,12 @@ claim_order (const char *instance_id, json_object_set_new (*contract_terms, "nonce", json_string (nonce))); + if (0 != GNUNET_memcmp (&order_ct, + claim_token)) + { + TMH_db->rollback (TMH_db->cls); + return GNUNET_DB_STATUS_SUCCESS_NO_RESULTS; + } qs = TMH_db->insert_contract_terms (TMH_db->cls, instance_id, order_id, @@ -207,7 +217,7 @@ TMH_post_orders_ID_claim (const struct TMH_RequestHandler *rh, qs = claim_order (hc->instance->settings.id, order_id, nonce, - // &claim_token -- FIXME #6446: modify claim_order to include token in WHERE clause + &claim_token, &contract_terms); if (GNUNET_DB_STATUS_SOFT_ERROR != qs) break; |