summaryrefslogtreecommitdiff
path: root/src/backend/taler-merchant-httpd_post-orders-ID-claim.c
diff options
context:
space:
mode:
authorJonathan Buchanan <jonathan.russ.buchanan@gmail.com>2020-07-29 01:03:44 -0400
committerJonathan Buchanan <jonathan.russ.buchanan@gmail.com>2020-07-29 01:03:44 -0400
commit9755a40ef68b78039293c8505fb0910d42affa4e (patch)
tree2b4c08cf76ce088a53ad07dd71c1a294dd40fbd4 /src/backend/taler-merchant-httpd_post-orders-ID-claim.c
parentb54d6b0552a84ed790e1faa5cbe9e0a66a9bc702 (diff)
downloadmerchant-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.c12
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;