diff options
author | Christian Grothoff <christian@grothoff.org> | 2020-01-15 00:15:40 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2020-01-15 00:15:40 +0100 |
commit | 087de13e0a2173f8f1f87bcef1fe8e33c23e4967 (patch) | |
tree | b3587b2ec05a52329b1da7720ea67ab8fe18c4d4 | |
parent | bf3c7dd10fea30d3c59849a21cefcb79c7c940e4 (diff) |
use new parsing API, fixes issues
-rw-r--r-- | src/bank-lib/bank_api_common.c | 2 | ||||
-rw-r--r-- | src/bank-lib/bank_api_payto.c | 69 | ||||
-rw-r--r-- | src/lib/exchange_api_handle.c | 3 | ||||
-rw-r--r-- | src/lib/test_exchange_api.c | 4 |
4 files changed, 17 insertions, 61 deletions
diff --git a/src/bank-lib/bank_api_common.c b/src/bank-lib/bank_api_common.c index 8a8f4289f..d9df5b39f 100644 --- a/src/bank-lib/bank_api_common.c +++ b/src/bank-lib/bank_api_common.c @@ -70,6 +70,8 @@ TALER_BANK_setup_auth_ (CURL *easy, /** * Obtain the URL to use for an API request. + * FIXME: duplicates MAH_path_to_url2, and likely also logic in util! + * FIXME: duplicates TEAH_path_to_url2, and likely also logic in util! * * @param u base URL of the bank. * @param path Taler API path (i.e. "/history"). diff --git a/src/bank-lib/bank_api_payto.c b/src/bank-lib/bank_api_payto.c index 5f87eb796..c429561e6 100644 --- a/src/bank-lib/bank_api_payto.c +++ b/src/bank-lib/bank_api_payto.c @@ -399,74 +399,31 @@ parse_payto_iban (const char *account_url, * Parse payto://x-taler-bank/ account URL (only account information, * wire subject and amount are ignored). * - * @param account_url URL to parse + * @param payto_url URL to parse * @param account[out] set to information, can be NULL * @return #TALER_EC_NONE if @a account_url is well-formed */ static enum TALER_ErrorCode -parse_payto_x_taler_bank (const char *account_url, +parse_payto_x_taler_bank (const char *payto_url, struct TALER_Account *r_account) { - const char *hostname; - const char *account; - const char *q; - unsigned int port; - char *p; - #define PREFIX "payto://x-taler-bank/" - if (0 != strncasecmp (account_url, + if (0 != strncasecmp (payto_url, PREFIX, strlen (PREFIX))) return TALER_EC_PAYTO_WRONG_METHOD; - hostname = &account_url[strlen (PREFIX)]; - if (NULL == (account = strchr (hostname, - (unsigned char) '/'))) - return TALER_EC_PAYTO_MALFORMED; - account++; - if (NULL == r_account) - return TALER_EC_NONE; - q = strchr (account, - (unsigned char) '?'); - if (0 == q) - q = account + strlen (account); +#undef PREFIX r_account->details.x_taler_bank.hostname - = GNUNET_strndup (hostname, - account - hostname); - port = 443; /* if non given, equals 443. */ - if (NULL != (p = strchr (r_account->details.x_taler_bank.hostname, - (unsigned char) ':'))) - { - p++; - if (1 != sscanf (p, - "%u", - &port)) - { - GNUNET_break (0); - TALER_LOG_ERROR ("Malformed host from payto:// URI\n"); - GNUNET_free (r_account->details.x_taler_bank.hostname); - r_account->details.x_taler_bank.hostname = NULL; - return TALER_EC_PAYTO_MALFORMED; - } - } - if (443 != port) - { - GNUNET_assert - (GNUNET_SYSERR != GNUNET_asprintf - (&r_account->details.x_taler_bank.account_base_url, - "http://%s/%.*s", - r_account->details.x_taler_bank.hostname, - (int) (q - account), - account)); - } - else + = TALER_xtalerbank_base_url_from_payto (payto_url); + if (NULL == r_account->details.x_taler_bank.hostname) + return TALER_EC_PAYTO_MALFORMED; + r_account->details.x_taler_bank.account_base_url + = TALER_xtalerbank_account_url_from_payto (payto_url); + if (NULL == r_account->details.x_taler_bank.hostname) { - GNUNET_assert - (GNUNET_SYSERR != GNUNET_asprintf - (&r_account->details.x_taler_bank.account_base_url, - "https://%s/%.*s", - r_account->details.x_taler_bank.hostname, - (int) (q - account), - account)); + GNUNET_free (r_account->details.x_taler_bank.hostname); + r_account->details.x_taler_bank.hostname = NULL; + return TALER_EC_PAYTO_MALFORMED; } r_account->type = TALER_PAC_X_TALER_BANK; return TALER_EC_NONE; diff --git a/src/lib/exchange_api_handle.c b/src/lib/exchange_api_handle.c index 6b51519fd..c7b402b5e 100644 --- a/src/lib/exchange_api_handle.c +++ b/src/lib/exchange_api_handle.c @@ -1262,7 +1262,7 @@ keys_completed_cb (void *cls, for (unsigned int i = 0; i<kd_old.num_denom_keys; i++) kd.denom_keys[i].key.rsa_public_key = GNUNET_CRYPTO_rsa_public_key_dup ( - kd_old.denom_keys[i].key.rsa_public_key); + kd_old.denom_keys[i].key.rsa_public_key); kd.num_auditors = kd_old.num_auditors; kd.auditors = GNUNET_new_array (kd.num_auditors, @@ -1422,6 +1422,7 @@ TEAH_path_to_url (struct TALER_EXCHANGE_Handle *h, /** * Obtain the URL to use for an API request. + * FIXME: duplicates MAH_path_to_url2, and likely also logic in util! * * @param base_url base URL of the exchange (i.e. "http://exchange/") * @param path Taler API path (i.e. "/reserve/withdraw") diff --git a/src/lib/test_exchange_api.c b/src/lib/test_exchange_api.c index 81e54a981..4a1f406f5 100644 --- a/src/lib/test_exchange_api.c +++ b/src/lib/test_exchange_api.c @@ -121,14 +121,11 @@ run (void *cls, */ CMD_TRANSFER_TO_EXCHANGE ("create-reserve-1", "EUR:5.01"), - /** * Make a reserve exist, according to the previous * transfer. */ CMD_EXEC_WIREWATCH ("wirewatch-1"), - - /** * Withdraw EUR:5. */ @@ -136,7 +133,6 @@ run (void *cls, "create-reserve-1", "EUR:5", MHD_HTTP_OK), - /** * Check the reserve is depleted. */ |