commit 2625647c7bfb06f052ff5f77c7fb43f1d069c74c
parent 063140e4872549d4aa348913377ba707a591a878
Author: Bohdan Potuzhnyi <potub1@bfh.ch>
Date: Mon, 7 Oct 2024 15:03:29 +0000
Merge branch 'master' into dev/bohdan-potuzhnyi/donau-integration
Diffstat:
3 files changed, 70 insertions(+), 7 deletions(-)
diff --git a/src/backend/taler-merchant-httpd_exchanges.c b/src/backend/taler-merchant-httpd_exchanges.c
@@ -35,7 +35,7 @@
* Threshold after which exponential backoff should not increase.
*/
#define RETRY_BACKOFF_THRESHOLD GNUNET_TIME_relative_multiply ( \
- GNUNET_TIME_UNIT_SECONDS, 60)
+ GNUNET_TIME_UNIT_SECONDS, 60)
/**
* This is how long /keys long-polls for, so we should
@@ -43,7 +43,7 @@
* answer. See exchange_api_handle.c.
*/
#define LONG_POLL_THRESHOLD GNUNET_TIME_relative_multiply ( \
- GNUNET_TIME_UNIT_SECONDS, 120)
+ GNUNET_TIME_UNIT_SECONDS, 120)
/**
@@ -720,6 +720,12 @@ TMH_exchange_check_debit (
&kyc_ok,
&jlimits);
GNUNET_break (qs >= 0);
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "get_kyc_limits for %s at %s returned %s/%s\n",
+ wm->payto_uri,
+ exchange->url,
+ kyc_ok ? "KYC OK" : "KYC missing",
+ NULL == jlimits ? "default limits" : "custom limits");
if ( (qs > 0) &&
(NULL != jlimits) )
{
@@ -756,6 +762,10 @@ TMH_exchange_check_debit (
if ( (TALER_KYCLOGIC_KYC_TRIGGER_DEPOSIT != ot) &&
(TALER_KYCLOGIC_KYC_TRIGGER_TRANSACTION != ot) )
continue;
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "KYC rule %u with limit %s applies\n",
+ (unsigned int) idx,
+ TALER_amount2s (&threshold));
if (unlimited)
{
unlimited = false;
@@ -794,6 +804,9 @@ TMH_exchange_check_debit (
}
else
{
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Evaluating default limits of %s\n",
+ exchange->url);
TALER_EXCHANGE_keys_evaluate_hard_limits (
keys,
TALER_KYCLOGIC_KYC_TRIGGER_DEPOSIT,
@@ -802,6 +815,19 @@ TMH_exchange_check_debit (
keys,
TALER_KYCLOGIC_KYC_TRIGGER_TRANSACTION,
max_amount);
+ if (TALER_EXCHANGE_keys_evaluate_zero_limits (
+ keys,
+ TALER_KYCLOGIC_KYC_TRIGGER_DEPOSIT) ||
+ TALER_EXCHANGE_keys_evaluate_zero_limits (
+ keys,
+ TALER_KYCLOGIC_KYC_TRIGGER_TRANSACTION))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Operation is zero-limited by default\n");
+ GNUNET_assert (GNUNET_OK ==
+ TALER_amount_set_zero (max_amount->currency,
+ max_amount));
+ }
}
return account_ok ? GNUNET_YES : GNUNET_NO;
}
diff --git a/src/backend/taler-merchant-httpd_private-get-instances-ID-kyc.c b/src/backend/taler-merchant-httpd_private-get-instances-ID-kyc.c
@@ -459,9 +459,21 @@ get_exchange_limits (
json_t *limits;
if (NULL != ekr->jlimits)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Returning custom KYC limits\n");
return json_incref (ekr->jlimits);
+ }
if (NULL == keys)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "No keys, thus no default KYC limits known\n");
return NULL;
+ }
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Returning default KYC limits (%u/%u)\n",
+ keys->hard_limits_length,
+ keys->zero_limits_length);
limits = json_array ();
GNUNET_assert (NULL != limits);
for (unsigned int i = 0; i<keys->hard_limits_length; i++)
@@ -516,6 +528,9 @@ ekr_expand_response (struct ExchangeKycRequest *ekr)
GNUNET_JSON_pack_string (
"payto_uri",
ekr->payto_uri),
+ GNUNET_JSON_pack_data_auto (
+ "h_wire",
+ &ekr->h_wire),
GNUNET_JSON_pack_string (
"exchange_url",
ekr->exchange_url),
@@ -683,6 +698,9 @@ determine_eligible_accounts (
: '&',
TALER_amount2s (&kyc_amount),
merchant_pub_str);
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Found account %s where KYC auth is possible\n",
+ payto_kycauth);
GNUNET_assert (0 ==
json_array_append_new (ekr->pkaa,
json_string (payto_kycauth)));
diff --git a/src/backend/taler-merchant-httpd_private-post-orders.c b/src/backend/taler-merchant-httpd_private-post-orders.c
@@ -1982,11 +1982,19 @@ get_acceptable (void *cls,
priority = 768; /* stale, no accounts yet */
break;
}
- GNUNET_break (0 <=
- TALER_amount_add (
- &oc->set_exchanges.total_exchange_limit,
- &oc->set_exchanges.total_exchange_limit,
- &max_amount));
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Exchange %s deposit limit is %s, adding it!\n",
+ url,
+ TALER_amount2s (&max_amount));
+ GNUNET_assert (0 <=
+ TALER_amount_add (
+ &oc->set_exchanges.total_exchange_limit,
+ &oc->set_exchanges.total_exchange_limit,
+ &max_amount));
+ GNUNET_assert (GNUNET_OK ==
+ TALER_amount_min (&oc->set_exchanges.total_exchange_limit,
+ &oc->set_exchanges.total_exchange_limit,
+ &oc->parse_order.brutto));
j_exchange = GNUNET_JSON_PACK (
GNUNET_JSON_pack_string ("url",
url),
@@ -2169,11 +2177,16 @@ set_exchanges (struct OrderContext *oc)
if (TALER_amount_is_zero (&oc->parse_order.brutto))
{
/* Total amount is zero, so we don't actually need exchanges! */
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Order total is zero, no need for exchanges\n");
oc->set_exchanges.exchanges = json_array ();
GNUNET_assert (NULL != oc->set_exchanges.exchanges);
oc->phase++;
return false;
}
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Order total is %s, trying to find exchanges\n",
+ TALER_amount2s (&oc->parse_order.brutto));
/* Note: re-building 'oc->set_exchanges.exchanges' every time here might be a
tad expensive; could likely consider caching the result if it starts to
matter. */
@@ -2262,6 +2275,12 @@ set_exchanges (struct OrderContext *oc)
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
"Creating order, but possibly without usable trusted exchanges\n");
}
+ else
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "Can create order: %s is the sum of hard limits from supported exchanges\n",
+ TALER_amount2s (&oc->set_exchanges.total_exchange_limit));
+ }
oc->phase++;
return false;
}