summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2020-01-15 00:15:40 +0100
committerChristian Grothoff <christian@grothoff.org>2020-01-15 00:15:40 +0100
commit087de13e0a2173f8f1f87bcef1fe8e33c23e4967 (patch)
treeb3587b2ec05a52329b1da7720ea67ab8fe18c4d4
parentbf3c7dd10fea30d3c59849a21cefcb79c7c940e4 (diff)
downloadexchange-087de13e0a2173f8f1f87bcef1fe8e33c23e4967.tar.gz
exchange-087de13e0a2173f8f1f87bcef1fe8e33c23e4967.tar.bz2
exchange-087de13e0a2173f8f1f87bcef1fe8e33c23e4967.zip
use new parsing API, fixes issues
-rw-r--r--src/bank-lib/bank_api_common.c2
-rw-r--r--src/bank-lib/bank_api_payto.c69
-rw-r--r--src/lib/exchange_api_handle.c3
-rw-r--r--src/lib/test_exchange_api.c4
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.
*/