diff options
author | Christian Grothoff <christian@grothoff.org> | 2021-11-19 11:43:40 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2021-11-19 11:43:40 +0100 |
commit | 61c6cb27442aed0b45cf31f8a69183b1c39e9a13 (patch) | |
tree | 0bd4be7427bc0fcff3dcad24ab55480c93a03a24 /src/backend/taler-merchant-httpd_post-orders-ID-claim.c | |
parent | 39e6ebbc169a250b6ae11928f5ce58696f09f19f (diff) | |
download | merchant-61c6cb27442aed0b45cf31f8a69183b1c39e9a13.tar.gz merchant-61c6cb27442aed0b45cf31f8a69183b1c39e9a13.tar.bz2 merchant-61c6cb27442aed0b45cf31f8a69183b1c39e9a13.zip |
-fix misc bugs
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", |