diff options
author | Christian Grothoff <christian@grothoff.org> | 2022-06-06 19:42:46 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2022-06-06 19:43:06 +0200 |
commit | 89d4f6430956129d9bfb29551fc2fa1c5c147676 (patch) | |
tree | 81bc1888abd15b01e18071615416f591a6a40b3f /src/backend/taler-merchant-httpd_get-orders-ID.c | |
parent | 2d1e2b3e9992652ab1ff2e7b8a34a511779d04dd (diff) | |
download | merchant-89d4f6430956129d9bfb29551fc2fa1c5c147676.tar.gz merchant-89d4f6430956129d9bfb29551fc2fa1c5c147676.tar.bz2 merchant-89d4f6430956129d9bfb29551fc2fa1c5c147676.zip |
fix backend double-pay issue (#7244)
Diffstat (limited to 'src/backend/taler-merchant-httpd_get-orders-ID.c')
-rw-r--r-- | src/backend/taler-merchant-httpd_get-orders-ID.c | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/src/backend/taler-merchant-httpd_get-orders-ID.c b/src/backend/taler-merchant-httpd_get-orders-ID.c index 76dfefd5..910d53fc 100644 --- a/src/backend/taler-merchant-httpd_get-orders-ID.c +++ b/src/backend/taler-merchant-httpd_get-orders-ID.c @@ -764,17 +764,17 @@ process_refunds_cb (void *cls, TALER_B2S (coin_pub), reason); god->refund_pending |= pending; - if (!pending) - { + if (! pending) + { GNUNET_assert (0 <= - TALER_amount_add (&god->refund_taken, - &god->refund_taken, - refund_amount)); + TALER_amount_add (&god->refund_taken, + &god->refund_taken, + refund_amount)); } GNUNET_assert (0 <= - TALER_amount_add (&god->refund_amount, - &god->refund_amount, - refund_amount)); + TALER_amount_add (&god->refund_amount, + &god->refund_amount, + refund_amount)); god->refunded = true; } @@ -1030,6 +1030,7 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh, if (NULL == god->contract_terms) { uint64_t order_serial; + bool paid = false; struct TALER_ClaimTokenP db_claim_token; qs = TMH_db->lookup_contract_terms (TMH_db->cls, @@ -1037,6 +1038,7 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh, order_id, &god->contract_terms, &order_serial, + &paid, &db_claim_token); if (0 > qs) { @@ -1063,7 +1065,7 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh, { contract_available = true; - if (GNUNET_YES == GNUNET_is_zero (&god->h_contract_terms)) + if (GNUNET_YES == GNUNET_is_zero (&god->h_contract_terms)) { if (GNUNET_OK != @@ -1072,9 +1074,9 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh, { GNUNET_break (0); return TALER_MHD_reply_with_error (connection, - MHD_HTTP_INTERNAL_SERVER_ERROR, - TALER_EC_GENERIC_FAILED_COMPUTE_JSON_HASH, - "contract terms"); + MHD_HTTP_INTERNAL_SERVER_ERROR, + TALER_EC_GENERIC_FAILED_COMPUTE_JSON_HASH, + "contract terms"); } } @@ -1089,14 +1091,14 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh, { GNUNET_break (0); return TALER_MHD_reply_with_error (connection, - MHD_HTTP_INTERNAL_SERVER_ERROR, - TALER_EC_GENERIC_FAILED_COMPUTE_JSON_HASH, - "contract terms"); + MHD_HTTP_INTERNAL_SERVER_ERROR, + TALER_EC_GENERIC_FAILED_COMPUTE_JSON_HASH, + "contract terms"); } contract_match = (0 == GNUNET_memcmp (&h, - &god->h_contract_terms)); - if ( !contract_match ) + &god->h_contract_terms)); + if (! contract_match) { GNUNET_break_op (0); return TALER_MHD_reply_with_error ( @@ -1105,7 +1107,7 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh, TALER_EC_MERCHANT_GENERIC_CONTRACT_HASH_DOES_NOT_MATCH_ORDER, NULL); } - + } } @@ -1509,7 +1511,7 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh, GNUNET_JSON_pack_bool ("refund_pending", god->refund_pending), TALER_JSON_pack_amount ("refund_taken", - &god->refund_taken), + &god->refund_taken), TALER_JSON_pack_amount ("refund_amount", &god->refund_amount)); } |