summaryrefslogtreecommitdiff
path: root/src/backend/taler-merchant-httpd_get-orders-ID.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2022-06-06 19:42:46 +0200
committerChristian Grothoff <christian@grothoff.org>2022-06-06 19:43:06 +0200
commit89d4f6430956129d9bfb29551fc2fa1c5c147676 (patch)
tree81bc1888abd15b01e18071615416f591a6a40b3f /src/backend/taler-merchant-httpd_get-orders-ID.c
parent2d1e2b3e9992652ab1ff2e7b8a34a511779d04dd (diff)
downloadmerchant-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.c40
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));
}