commit a2f6a0ab24e8b4eec6169fc0478f503cff425e6f
parent 50e0bdbfa81107a525f8f708d82d050e485700cb
Author: Christian Grothoff <grothoff@gnunet.org>
Date: Thu, 14 Aug 2025 17:29:03 +0200
more work on #9434
Diffstat:
5 files changed, 34 insertions(+), 21 deletions(-)
diff --git a/src/backend/taler-merchant-httpd_post-orders-ID-pay.c b/src/backend/taler-merchant-httpd_post-orders-ID-pay.c
@@ -2845,8 +2845,8 @@ phase_execute_pay_transaction (struct PayContext *pc)
case TALER_MERCHANT_CONTRACT_OUTPUT_TYPE_TOKEN:
struct SignedOutputToken *output =
&pc->output_tokens[i];
-
enum GNUNET_DB_QueryStatus qs;
+
qs = TMH_db->insert_issued_token (TMH_db->cls,
&pc->check_contract.h_contract_terms,
&output->h_issue,
@@ -2963,7 +2963,8 @@ find_valid_input_tokens (
for (unsigned int j = 0; j < expected_num; j++)
{
- struct TokenUseConfirmation *tuc = &pc->parse_pay.tokens[index + j];
+ struct TokenUseConfirmation *tuc
+ = &pc->parse_pay.tokens[index + j];
const struct TALER_MERCHANT_ContractTokenFamilyKey *key = NULL;
for (unsigned int i = 0; i<family->keys_len; i++)
@@ -2971,8 +2972,12 @@ find_valid_input_tokens (
const struct TALER_MERCHANT_ContractTokenFamilyKey *ki
= &family->keys[i];
- if (GNUNET_TIME_timestamp_cmp (ki->valid_after, >, now) ||
- GNUNET_TIME_timestamp_cmp (ki->valid_before, <, now))
+ if (GNUNET_TIME_timestamp_cmp (ki->valid_after,
+ >=,
+ now) ||
+ GNUNET_TIME_timestamp_cmp (ki->valid_before,
+ <,
+ now))
{
continue; /* ki currently not valid */
}
@@ -3055,7 +3060,6 @@ find_valid_input_tokens (
NULL));
return GNUNET_NO;
}
-
return GNUNET_YES;
}
diff --git a/src/backenddb/pg_insert_issued_token.c b/src/backenddb/pg_insert_issued_token.c
@@ -56,7 +56,7 @@ TMH_PG_insert_issued_token (void *cls,
PREPARE (pg,
"issued_token_insert",
"SELECT"
- " ,out_no_family"
+ " out_no_family"
" ,out_existed"
" FROM merchant_do_insert_issued_token"
" ($1, $2, $3);");
diff --git a/src/backenddb/pg_insert_issued_token.sql b/src/backenddb/pg_insert_issued_token.sql
@@ -25,15 +25,16 @@ CREATE FUNCTION merchant_do_insert_issued_token (
LANGUAGE plpgsql
AS $$
DECLARE
+ my_rec RECORD;
my_tfk_serial INT8;
+ my_tf_serial INT8;
BEGIN
-SELECT mtf.token_family_key_serial
- INTO my_tfk_serial
- FROM merchant_token_families mtf
- JOIN merchant_token_family_keys mtfk
- USING (token_family_serial)
- WHERE mtfk.h_pub = in_h_issue_pub;
+SELECT token_family_key_serial
+ ,token_family_serial
+ INTO my_rec
+ FROM merchant_token_family_keys
+ WHERE h_pub = in_h_issue_pub;
IF NOT FOUND
THEN
@@ -42,6 +43,8 @@ THEN
return;
END IF;
+my_tfk_serial = my_rec.token_family_key_serial;
+my_tf_serial = my_rec.token_family_serial;
out_no_family = FALSE;
INSERT INTO merchant_issued_tokens
@@ -59,9 +62,11 @@ THEN
out_existed = TRUE;
return;
END IF;
+out_existed = FALSE;
UPDATE merchant_token_families
SET issued=issued+1
- WHERE token_family_key_serial=my_tfk_serial;
+ WHERE token_family_serial=my_tf_serial;
+
END $$;
diff --git a/src/backenddb/pg_insert_spent_token.c b/src/backenddb/pg_insert_spent_token.c
@@ -59,7 +59,7 @@ TMH_PG_insert_spent_token (
PREPARE (pg,
"spent_token_insert",
"SELECT"
- " ,out_no_family"
+ " out_no_family"
" ,out_existed"
" FROM merchant_do_insert_spent_token"
"($1, $2, $3, $4, $5);");
diff --git a/src/backenddb/pg_insert_spent_token.sql b/src/backenddb/pg_insert_spent_token.sql
@@ -27,15 +27,16 @@ CREATE FUNCTION merchant_do_insert_spent_token (
LANGUAGE plpgsql
AS $$
DECLARE
+ my_rec RECORD;
my_tfk_serial INT8;
+ my_tf_serial INT8;
BEGIN
-SELECT mtf.token_family_key_serial
- INTO my_tfk_serial
- FROM merchant_token_families mtf
- JOIN merchant_token_family_keys mtfk
- USING (token_family_serial)
- WHERE mtfk.h_pub = in_h_issue_pub;
+SELECT token_family_key_serial
+ ,token_family_serial
+ INTO my_rec
+ FROM merchant_token_family_keys
+ WHERE h_pub = in_h_issue_pub;
IF NOT FOUND
THEN
@@ -45,6 +46,8 @@ THEN
END IF;
out_no_family = FALSE;
+my_tfk_serial = my_rec.token_family_key_serial;
+my_tf_serial = my_rec.token_family_serial;
INSERT INTO merchant_used_tokens
(token_family_key_serial
@@ -65,9 +68,10 @@ THEN
out_existed = TRUE;
return;
END IF;
+out_existed = FALSE;
UPDATE merchant_token_families
SET redeemed=redeemed+1
- WHERE token_family_key_serial=my_tfk_serial;
+ WHERE token_family_serial=my_tf_serial;
END $$;