diff options
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 | 22 |
1 files changed, 19 insertions, 3 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 17475c9a..089933ea 100644 --- a/src/backend/taler-merchant-httpd_post-orders-ID-claim.c +++ b/src/backend/taler-merchant-httpd_post-orders-ID-claim.c @@ -62,7 +62,6 @@ claim_order (const char *instance_id, struct TALER_ClaimTokenP order_ct; enum GNUNET_DB_QueryStatus qs; uint64_t order_serial; - struct GNUNET_TIME_Absolute timestamp; if (GNUNET_OK != TMH_db->start (TMH_db->cls, @@ -90,8 +89,6 @@ claim_order (const char *instance_id, struct GNUNET_JSON_Specification spec[] = { GNUNET_JSON_spec_string ("nonce", &stored_nonce), - TALER_JSON_spec_absolute_time ("timestamp", - ×tamp), GNUNET_JSON_spec_end () }; @@ -126,6 +123,12 @@ claim_order (const char *instance_id, { struct GNUNET_HashCode unused; + struct GNUNET_TIME_Absolute timestamp; + struct GNUNET_JSON_Specification spec[] = { + TALER_JSON_spec_absolute_time ("timestamp", + ×tamp), + GNUNET_JSON_spec_end () + }; /* see if we have this order in our table of unclaimed orders */ qs = TMH_db->lookup_order (TMH_db->cls, @@ -140,6 +143,19 @@ claim_order (const char *instance_id, return qs; } GNUNET_assert (NULL != *contract_terms); + if (GNUNET_OK != + GNUNET_JSON_parse (*contract_terms, + spec, + NULL, + NULL)) + { + /* this should not be possible: contract_terms should always + have a timestamp! */ + GNUNET_break (0); + TMH_db->rollback (TMH_db->cls); + return GNUNET_DB_STATUS_HARD_ERROR; + } + GNUNET_assert (0 == json_object_set_new (*contract_terms, "nonce", |