exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

commit 325eef98ef9f0bbfa99e1abb3c2e4f7fb79578e0
parent b0840af24bbfa82b4d83441cff9d99852cdbce40
Author: Christian Grothoff <christian@grothoff.org>
Date:   Sun, 19 Apr 2026 11:54:06 +0200

fix up insert_successor_measure logic

Diffstat:
Msrc/exchangedb/insert_successor_measure.c | 12+++++++-----
Msrc/exchangedb/insert_successor_measure.sql | 37++++++++-----------------------------
Msrc/exchangedb/update_rules.c | 16----------------
Msrc/include/exchange-database/insert_successor_measure.h | 20++++++++------------
4 files changed, 23 insertions(+), 62 deletions(-)

diff --git a/src/exchangedb/insert_successor_measure.c b/src/exchangedb/insert_successor_measure.c @@ -55,6 +55,7 @@ TALER_EXCHANGEDB_insert_successor_measure ( NULL != jmeasures ? TALER_PQ_query_param_json (jmeasures) : GNUNET_PQ_query_param_null (), + GNUNET_PQ_query_param_string (notify_s), GNUNET_PQ_query_param_end }; struct GNUNET_PQ_ResultSpec rs[] = { @@ -73,11 +74,12 @@ TALER_EXCHANGEDB_insert_successor_measure ( ",out_last_date" ",out_legitimization_measure_serial_id" " FROM exchange_do_insert_successor_measure" - "($1, $2, $3, $4, $5::TEXT::JSONB);"); - qs = GNUNET_PQ_eval_prepared_singleton_select (pg->conn, - "do_insert_successor_measure", - params, - rs); + "($1, $2, $3, $4, $5::TEXT::JSONB, $6);"); + qs = GNUNET_PQ_eval_prepared_singleton_select ( + pg->conn, + "do_insert_successor_measure", + params, + rs); GNUNET_free (notify_s); GNUNET_PQ_event_do_poll (pg->conn); return qs; diff --git a/src/exchangedb/insert_successor_measure.sql b/src/exchangedb/insert_successor_measure.sql @@ -21,6 +21,7 @@ CREATE FUNCTION exchange_do_insert_successor_measure( IN in_expiration_time INT8, IN in_new_measure_name TEXT, -- can be NULL IN in_jmeasures JSONB, -- can be NULL + IN in_notify_s TEXT, OUT out_last_date INT8, OUT out_account_unknown BOOLEAN, OUT out_legitimization_measure_serial_id INT8 @@ -66,35 +67,9 @@ SELECT access_token IF NOT FOUND THEN - IF in_payto_uri IS NULL - THEN - -- AML decision on an unknown account without payto_uri => fail. - out_account_unknown=TRUE; - RETURN; - END IF; - - my_is_wallet - = (LOWER (SUBSTRING (in_payto_uri, 0, 23)) = - 'payto://taler-reserve/') OR - (LOWER (SUBSTRING (in_payto_uri, 0, 28)) = - 'payto://taler-reserve-http/'); - INSERT INTO kyc_targets - (h_normalized_payto - ,is_wallet) - VALUES - (in_h_normalized_payto - ,my_is_wallet) - RETURNING access_token - INTO my_access_token; - INSERT INTO wire_targets - (wire_target_h_payto - ,h_normalized_payto - ,payto_uri) - VALUES - (in_h_full_payto - ,in_h_normalized_payto - ,in_payto_uri) - ON CONFLICT DO NOTHING; + -- AML decision on an unknown account => fail. + out_account_unknown=TRUE; + RETURN; END IF; @@ -163,6 +138,10 @@ INSERT INTO legitimization_outcomes INTO my_outcome_serial_id; +EXECUTE FORMAT ( + 'NOTIFY %s' + ,in_notify_s); + END $$; diff --git a/src/exchangedb/update_rules.c b/src/exchangedb/update_rules.c @@ -486,22 +486,6 @@ run_measure (struct TALER_EXCHANGEDB_RuleUpdater *ru, break; } - // FIXME: combine with above transaction... - { - struct TALER_EXCHANGEDB_KycCompletedEventP eh = { - .header.size = htons (sizeof (eh)), - .header.type = htons (TALER_DBEVENT_EXCHANGE_KYC_COMPLETED), - .h_payto = ru->account - }; - - GNUNET_log (GNUNET_ERROR_TYPE_INFO, - "Triggering KYC COMPLETED event\n"); - TALER_EXCHANGEDB_event_notify (ru->pg, - &eh.header, - NULL, - 0); - } - if (unknown_account) { fail_update (ru, diff --git a/src/include/exchange-database/insert_successor_measure.h b/src/include/exchange-database/insert_successor_measure.h @@ -26,18 +26,14 @@ enum GNUNET_DB_QueryStatus -TALER_EXCHANGEDB_insert_successor_measure (struct - TALER_EXCHANGEDB_PostgresContext *pg, - const struct - TALER_NormalizedPaytoHashP * - h_payto, - struct GNUNET_TIME_Timestamp - decision_time, - const char *new_measure_name, - const json_t *jmeasures, - bool *unknown_account, - struct GNUNET_TIME_Timestamp * - last_date); +TALER_EXCHANGEDB_insert_successor_measure ( + struct TALER_EXCHANGEDB_PostgresContext *pg, + const struct TALER_NormalizedPaytoHashP *h_payto, + struct GNUNET_TIME_Timestamp decision_time, + const char *new_measure_name, + const json_t *jmeasures, + bool *unknown_account, + struct GNUNET_TIME_Timestamp *last_date); #endif