diff options
author | Christian Grothoff <christian@grothoff.org> | 2024-02-26 21:05:31 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2024-02-26 21:05:31 +0100 |
commit | f16b094ed6d5e851e3cb75c68158ad08a5a1fe5e (patch) | |
tree | 8071a17b28fe6e76ba22069af2a1b4782a4375f2 | |
parent | 6d2b01d1645a1520099aae9c59ce3b7da99310f4 (diff) |
-improve KYC error handling
-rw-r--r-- | src/exchange/taler-exchange-httpd_kyc-check.c | 76 | ||||
-rw-r--r-- | src/exchangedb/pg_get_pending_kyc_requirement_process.c | 7 | ||||
-rw-r--r-- | src/exchangedb/pg_update_kyc_process_by_row.c | 4 |
3 files changed, 46 insertions, 41 deletions
diff --git a/src/exchange/taler-exchange-httpd_kyc-check.c b/src/exchange/taler-exchange-httpd_kyc-check.c index fe45cd5b3..362c20a2e 100644 --- a/src/exchange/taler-exchange-httpd_kyc-check.c +++ b/src/exchange/taler-exchange-httpd_kyc-check.c @@ -253,26 +253,22 @@ initiate_cb ( { kyp->hint = GNUNET_strdup (error_msg_hint); } - if ( (TALER_EC_NONE != ec) && - (NULL != redirect_url) ) - { - qs = TEH_plugin->update_kyc_process_by_row ( - TEH_plugin->cls, - kyp->process_row, - kyp->section_name, - &kyp->h_payto, - provider_user_id, - provider_legitimization_id, - redirect_url, - GNUNET_TIME_UNIT_ZERO_ABS); - if (qs <= 0) - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "KYC requirement update failed for %s with status %d at %s:%u\n", - TALER_B2S (&kyp->h_payto), - qs, - __FILE__, - __LINE__); - } + qs = TEH_plugin->update_kyc_process_by_row ( + TEH_plugin->cls, + kyp->process_row, + kyp->section_name, + &kyp->h_payto, + provider_user_id, + provider_legitimization_id, + redirect_url, + GNUNET_TIME_UNIT_ZERO_ABS); + if (qs <= 0) + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "KYC requirement update failed for %s with status %d at %s:%u\n", + TALER_B2S (&kyp->h_payto), + qs, + __FILE__, + __LINE__); GNUNET_assert (kyp->suspended); kyp->suspended = false; GNUNET_CONTAINER_DLL_remove (kyp_head, @@ -410,29 +406,33 @@ kyc_check (void *cls, "insert_kyc_requirement_process"); return GNUNET_DB_STATUS_HARD_ERROR; } - if (qs > 0) + if ( (qs > 0) && + (NULL != redirect_url) ) { kyp->kyc_url = redirect_url; return qs; } - qs = TEH_plugin->insert_kyc_requirement_process ( - TEH_plugin->cls, - &h_payto, - kyp->section_name, - NULL, - NULL, - &kyp->process_row); - - if (qs < 0) + if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qs) { - if (GNUNET_DB_STATUS_SOFT_ERROR == qs) - return qs; - GNUNET_break (0); - *mhd_ret = TALER_MHD_reply_with_error (connection, - MHD_HTTP_INTERNAL_SERVER_ERROR, - TALER_EC_GENERIC_DB_STORE_FAILED, - "insert_kyc_requirement_process"); - return GNUNET_DB_STATUS_HARD_ERROR; + /* set up new requirement process */ + qs = TEH_plugin->insert_kyc_requirement_process ( + TEH_plugin->cls, + &h_payto, + kyp->section_name, + NULL, + NULL, + &kyp->process_row); + if (qs < 0) + { + if (GNUNET_DB_STATUS_SOFT_ERROR == qs) + return qs; + GNUNET_break (0); + *mhd_ret = TALER_MHD_reply_with_error (connection, + MHD_HTTP_INTERNAL_SERVER_ERROR, + TALER_EC_GENERIC_DB_STORE_FAILED, + "insert_kyc_requirement_process"); + return GNUNET_DB_STATUS_HARD_ERROR; + } } GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Initiating KYC check with logic %s\n", diff --git a/src/exchangedb/pg_get_pending_kyc_requirement_process.c b/src/exchangedb/pg_get_pending_kyc_requirement_process.c index 2a5808ff3..b9acddad1 100644 --- a/src/exchangedb/pg_get_pending_kyc_requirement_process.c +++ b/src/exchangedb/pg_get_pending_kyc_requirement_process.c @@ -40,11 +40,14 @@ TEH_PG_get_pending_kyc_requirement_process ( GNUNET_PQ_query_param_end }; struct GNUNET_PQ_ResultSpec rs[] = { - GNUNET_PQ_result_spec_string ("redirect_url", - redirect_url), + GNUNET_PQ_result_spec_allow_null ( + GNUNET_PQ_result_spec_string ("redirect_url", + redirect_url), + NULL), GNUNET_PQ_result_spec_end }; + *redirect_url = NULL; PREPARE (pg, "get_pending_kyc_requirement_process", "SELECT" diff --git a/src/exchangedb/pg_update_kyc_process_by_row.c b/src/exchangedb/pg_update_kyc_process_by_row.c index d379ee81d..c339436a8 100644 --- a/src/exchangedb/pg_update_kyc_process_by_row.c +++ b/src/exchangedb/pg_update_kyc_process_by_row.c @@ -48,7 +48,9 @@ TEH_PG_update_kyc_process_by_row ( (NULL != provider_legitimization_id) ? GNUNET_PQ_query_param_string (provider_legitimization_id) : GNUNET_PQ_query_param_null (), - GNUNET_PQ_query_param_string (redirect_url), + (NULL != redirect_url) + ? GNUNET_PQ_query_param_string (redirect_url) + : GNUNET_PQ_query_param_null (), GNUNET_PQ_query_param_absolute_time (&expiration), GNUNET_PQ_query_param_end }; |