diff options
author | Christian Grothoff <christian@grothoff.org> | 2023-01-29 21:52:07 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2023-01-29 21:52:07 +0100 |
commit | a1c0c2fafde7f516223eabac8002f443dbef86ea (patch) | |
tree | 387a9f077d5438ff86b9c35d77737d0c46d66101 /src/exchange/taler-exchange-httpd_reserves_close.c | |
parent | e8c8aa9efe8f407268e6f6e35d996f35756bc055 (diff) |
add test for KYC required on reserve close
Diffstat (limited to 'src/exchange/taler-exchange-httpd_reserves_close.c')
-rw-r--r-- | src/exchange/taler-exchange-httpd_reserves_close.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/exchange/taler-exchange-httpd_reserves_close.c b/src/exchange/taler-exchange-httpd_reserves_close.c index 6ace75fe..29c08ff7 100644 --- a/src/exchange/taler-exchange-httpd_reserves_close.c +++ b/src/exchange/taler-exchange-httpd_reserves_close.c @@ -178,14 +178,13 @@ reserve_close_transaction (void *cls, { struct ReserveCloseContext *rcc = cls; enum GNUNET_DB_QueryStatus qs; - struct TALER_Amount balance; char *payto_uri = NULL; const struct TALER_WireFeeSet *wf; qs = TEH_plugin->select_reserve_close_info ( TEH_plugin->cls, rcc->reserve_pub, - &balance, + &rcc->balance, &payto_uri); switch (qs) { @@ -226,6 +225,9 @@ reserve_close_transaction (void *cls, (0 != strcmp (payto_uri, rcc->payto_uri)) ) ) { + /* KYC check may be needed: we're not returning + the money to the account that funded the reserve + in the first place. */ const char *kyc_needed; TALER_payto_hash (rcc->payto_uri, @@ -263,12 +265,15 @@ reserve_close_transaction (void *cls, "iterate_reserve_close_info"); return qs; } - rcc->kyc.ok = false; - return TEH_plugin->insert_kyc_requirement_for_account ( - TEH_plugin->cls, - kyc_needed, - &rcc->kyc_payto, - &rcc->kyc.requirement_row); + if (NULL != kyc_needed) + { + rcc->kyc.ok = false; + return TEH_plugin->insert_kyc_requirement_for_account ( + TEH_plugin->cls, + kyc_needed, + &rcc->kyc_payto, + &rcc->kyc.requirement_row); + } } rcc->kyc.ok = true; @@ -296,7 +301,7 @@ reserve_close_transaction (void *cls, if (0 > TALER_amount_subtract (&rcc->wire_amount, - &balance, + &rcc->balance, &wf->closing)) { GNUNET_log (GNUNET_ERROR_TYPE_INFO, @@ -314,7 +319,7 @@ reserve_close_transaction (void *cls, payto_uri, &rcc->reserve_sig, rcc->timestamp, - &balance, + &rcc->balance, &wf->closing); GNUNET_free (payto_uri); if (GNUNET_DB_STATUS_HARD_ERROR == qs) |