reuse TALER_url_join
This commit is contained in:
parent
dd6bad739a
commit
a9ae2171b8
@ -202,8 +202,15 @@ TALER_BANK_admin_add_incoming (struct GNUNET_CURL_Context *ctx,
|
|||||||
aai = GNUNET_new (struct TALER_BANK_AdminAddIncomingHandle);
|
aai = GNUNET_new (struct TALER_BANK_AdminAddIncomingHandle);
|
||||||
aai->cb = res_cb;
|
aai->cb = res_cb;
|
||||||
aai->cb_cls = res_cb_cls;
|
aai->cb_cls = res_cb_cls;
|
||||||
aai->request_url = TALER_BANK_path_to_url_ (account_base_url,
|
aai->request_url = TALER_url_join (account_base_url,
|
||||||
"/admin/add-incoming");
|
"admin/add-incoming",
|
||||||
|
NULL);
|
||||||
|
if (NULL == aai->request_url)
|
||||||
|
{
|
||||||
|
GNUNET_free (aai);
|
||||||
|
GNUNET_break (0);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||||
"Requesting administrative transaction at `%s' for reserve %s\n",
|
"Requesting administrative transaction at `%s' for reserve %s\n",
|
||||||
aai->request_url,
|
aai->request_url,
|
||||||
|
@ -68,33 +68,4 @@ 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").
|
|
||||||
*
|
|
||||||
* @return the full URL to use with cURL, must be
|
|
||||||
* freed by the caller.
|
|
||||||
*/
|
|
||||||
char *
|
|
||||||
TALER_BANK_path_to_url_ (const char *u,
|
|
||||||
const char *path)
|
|
||||||
{
|
|
||||||
char *url;
|
|
||||||
|
|
||||||
if ( ('/' == path[0]) &&
|
|
||||||
(0 < strlen (u)) &&
|
|
||||||
('/' == u[strlen (u) - 1]) )
|
|
||||||
path++; /* avoid generating URL with "//" from concat */
|
|
||||||
GNUNET_asprintf (&url,
|
|
||||||
"%s%s",
|
|
||||||
u,
|
|
||||||
path);
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* end of bank_api_common.c */
|
/* end of bank_api_common.c */
|
||||||
|
@ -51,16 +51,4 @@ TALER_BANK_setup_auth_ (CURL *easy,
|
|||||||
const struct TALER_BANK_AuthenticationData *auth);
|
const struct TALER_BANK_AuthenticationData *auth);
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Obtain the URL to use for an API request.
|
|
||||||
*
|
|
||||||
* @param u base URL of the bank
|
|
||||||
* @param path Taler API path (i.e. "/history")
|
|
||||||
* @return the full URL to use with cURL
|
|
||||||
*/
|
|
||||||
char *
|
|
||||||
TALER_BANK_path_to_url_ (const char *u,
|
|
||||||
const char *path);
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -257,19 +257,27 @@ TALER_BANK_credit_history (struct GNUNET_CURL_Context *ctx,
|
|||||||
( (0 == start_row) &&
|
( (0 == start_row) &&
|
||||||
(0 < num_results) ) )
|
(0 < num_results) ) )
|
||||||
GNUNET_asprintf (&url,
|
GNUNET_asprintf (&url,
|
||||||
"/history/incoming?delta=%lld",
|
"history/incoming?delta=%lld",
|
||||||
(long long) num_results);
|
(long long) num_results);
|
||||||
else
|
else
|
||||||
GNUNET_asprintf (&url,
|
GNUNET_asprintf (&url,
|
||||||
"/history/incoming?delta=%lld&start=%llu",
|
"history/incoming?delta=%lld&start=%llu",
|
||||||
(long long) num_results,
|
(long long) num_results,
|
||||||
start_row);
|
start_row);
|
||||||
hh = GNUNET_new (struct TALER_BANK_CreditHistoryHandle);
|
hh = GNUNET_new (struct TALER_BANK_CreditHistoryHandle);
|
||||||
hh->hcb = hres_cb;
|
hh->hcb = hres_cb;
|
||||||
hh->hcb_cls = hres_cb_cls;
|
hh->hcb_cls = hres_cb_cls;
|
||||||
|
hh->request_url = TALER_url_join (bank_base_url,
|
||||||
|
url,
|
||||||
|
NULL);
|
||||||
|
GNUNET_free (url);
|
||||||
|
if (NULL == hh->request_url)
|
||||||
|
{
|
||||||
|
GNUNET_free (hh);
|
||||||
|
GNUNET_break (0);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
hh->bank_base_url = GNUNET_strdup (bank_base_url);
|
hh->bank_base_url = GNUNET_strdup (bank_base_url);
|
||||||
hh->request_url = TALER_BANK_path_to_url_ (bank_base_url,
|
|
||||||
url);
|
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||||
"Requesting history at `%s'\n",
|
"Requesting history at `%s'\n",
|
||||||
hh->request_url);
|
hh->request_url);
|
||||||
@ -285,7 +293,6 @@ TALER_BANK_credit_history (struct GNUNET_CURL_Context *ctx,
|
|||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
TALER_BANK_credit_history_cancel (hh);
|
TALER_BANK_credit_history_cancel (hh);
|
||||||
curl_easy_cleanup (eh);
|
curl_easy_cleanup (eh);
|
||||||
GNUNET_free (url);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
hh->job = GNUNET_CURL_job_add2 (ctx,
|
hh->job = GNUNET_CURL_job_add2 (ctx,
|
||||||
@ -293,7 +300,6 @@ TALER_BANK_credit_history (struct GNUNET_CURL_Context *ctx,
|
|||||||
NULL,
|
NULL,
|
||||||
&handle_history_finished,
|
&handle_history_finished,
|
||||||
hh);
|
hh);
|
||||||
GNUNET_free (url);
|
|
||||||
return hh;
|
return hh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -254,19 +254,26 @@ TALER_BANK_debit_history (struct GNUNET_CURL_Context *ctx,
|
|||||||
( (0 == start_row) &&
|
( (0 == start_row) &&
|
||||||
(0 < num_results) ) )
|
(0 < num_results) ) )
|
||||||
GNUNET_asprintf (&url,
|
GNUNET_asprintf (&url,
|
||||||
"/history/outgoing?delta=%lld",
|
"history/outgoing?delta=%lld",
|
||||||
(long long) num_results);
|
(long long) num_results);
|
||||||
else
|
else
|
||||||
GNUNET_asprintf (&url,
|
GNUNET_asprintf (&url,
|
||||||
"/history/outgoing?delta=%lld&start=%llu",
|
"history/outgoing?delta=%lld&start=%llu",
|
||||||
(long long) num_results,
|
(long long) num_results,
|
||||||
start_row);
|
start_row);
|
||||||
hh = GNUNET_new (struct TALER_BANK_DebitHistoryHandle);
|
hh = GNUNET_new (struct TALER_BANK_DebitHistoryHandle);
|
||||||
hh->hcb = hres_cb;
|
hh->hcb = hres_cb;
|
||||||
hh->hcb_cls = hres_cb_cls;
|
hh->hcb_cls = hres_cb_cls;
|
||||||
hh->request_url = TALER_BANK_path_to_url_ (account_base_url,
|
hh->request_url = TALER_url_join (account_base_url,
|
||||||
url);
|
url,
|
||||||
|
NULL);
|
||||||
|
GNUNET_free (url);
|
||||||
|
if (NULL == hh->request_url)
|
||||||
|
{
|
||||||
|
GNUNET_free (hh);
|
||||||
|
GNUNET_break (0);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||||
"Requesting history at `%s'\n",
|
"Requesting history at `%s'\n",
|
||||||
hh->request_url);
|
hh->request_url);
|
||||||
@ -282,7 +289,6 @@ TALER_BANK_debit_history (struct GNUNET_CURL_Context *ctx,
|
|||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
TALER_BANK_debit_history_cancel (hh);
|
TALER_BANK_debit_history_cancel (hh);
|
||||||
curl_easy_cleanup (eh);
|
curl_easy_cleanup (eh);
|
||||||
GNUNET_free (url);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
hh->job = GNUNET_CURL_job_add2 (ctx,
|
hh->job = GNUNET_CURL_job_add2 (ctx,
|
||||||
@ -290,7 +296,6 @@ TALER_BANK_debit_history (struct GNUNET_CURL_Context *ctx,
|
|||||||
NULL,
|
NULL,
|
||||||
&handle_history_finished,
|
&handle_history_finished,
|
||||||
hh);
|
hh);
|
||||||
GNUNET_free (url);
|
|
||||||
return hh;
|
return hh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -288,6 +288,18 @@ TALER_BANK_execute_wire_transfer (struct GNUNET_CURL_Context *ctx,
|
|||||||
}
|
}
|
||||||
TALER_amount_ntoh (&amount,
|
TALER_amount_ntoh (&amount,
|
||||||
&wp->amount);
|
&wp->amount);
|
||||||
|
weh = GNUNET_new (struct TALER_BANK_WireExecuteHandle);
|
||||||
|
weh->cb = cc;
|
||||||
|
weh->cb_cls = cc_cls;
|
||||||
|
weh->request_url = TALER_url_join (bank_base_url,
|
||||||
|
"transfer",
|
||||||
|
NULL);
|
||||||
|
if (NULL == weh->request_url)
|
||||||
|
{
|
||||||
|
GNUNET_free (weh);
|
||||||
|
GNUNET_break (0);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
transfer_obj = json_pack ("{s:o, s:o, s:s, s:o, s:s}",
|
transfer_obj = json_pack ("{s:o, s:o, s:s, s:o, s:s}",
|
||||||
"request_uid", GNUNET_JSON_from_data_auto (
|
"request_uid", GNUNET_JSON_from_data_auto (
|
||||||
&wp->request_uid),
|
&wp->request_uid),
|
||||||
@ -300,11 +312,6 @@ TALER_BANK_execute_wire_transfer (struct GNUNET_CURL_Context *ctx,
|
|||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
weh = GNUNET_new (struct TALER_BANK_WireExecuteHandle);
|
|
||||||
weh->cb = cc;
|
|
||||||
weh->cb_cls = cc_cls;
|
|
||||||
weh->request_url = TALER_BANK_path_to_url_ (bank_base_url,
|
|
||||||
"/transfer");
|
|
||||||
weh->post_ctx.headers = curl_slist_append
|
weh->post_ctx.headers = curl_slist_append
|
||||||
(weh->post_ctx.headers,
|
(weh->post_ctx.headers,
|
||||||
"Content-Type: application/json");
|
"Content-Type: application/json");
|
||||||
|
@ -405,34 +405,13 @@ char *
|
|||||||
MAH_path_to_url (struct TALER_AUDITOR_Handle *h,
|
MAH_path_to_url (struct TALER_AUDITOR_Handle *h,
|
||||||
const char *path)
|
const char *path)
|
||||||
{
|
{
|
||||||
return MAH_path_to_url2 (h->url,
|
char *ret;
|
||||||
path);
|
GNUNET_assert ('/' == path[0]);
|
||||||
}
|
ret = TALER_url_join (h->url,
|
||||||
|
path + 1,
|
||||||
|
NULL);
|
||||||
/**
|
GNUNET_assert (NULL != ret);
|
||||||
* Obtain the URL to use for an API request.
|
return ret;
|
||||||
* FIXME: duplicates TEAH_path_to_url2, and likely also logic in util!
|
|
||||||
*
|
|
||||||
* @param base_url base URL of the auditor (i.e. "http://auditor/")
|
|
||||||
* @param path Taler API path (i.e. "/deposit-confirmation")
|
|
||||||
* @return the full URL to use with cURL
|
|
||||||
*/
|
|
||||||
char *
|
|
||||||
MAH_path_to_url2 (const char *base_url,
|
|
||||||
const char *path)
|
|
||||||
{
|
|
||||||
char *url;
|
|
||||||
|
|
||||||
if ( ('/' == path[0]) &&
|
|
||||||
(0 < strlen (base_url)) &&
|
|
||||||
('/' == base_url[strlen (base_url) - 1]) )
|
|
||||||
path++; /* avoid generating URL with "//" from concat */
|
|
||||||
GNUNET_asprintf (&url,
|
|
||||||
"%s%s",
|
|
||||||
base_url,
|
|
||||||
path);
|
|
||||||
return url;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,16 +56,4 @@ MAH_path_to_url (struct TALER_AUDITOR_Handle *h,
|
|||||||
const char *path);
|
const char *path);
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Obtain the URL to use for an API request.
|
|
||||||
*
|
|
||||||
* @param base_url base URL of the auditor (i.e. "http://auditor/")
|
|
||||||
* @param path Taler API path (i.e. "/deposit-confirmation")
|
|
||||||
* @return the full URL to use with cURL
|
|
||||||
*/
|
|
||||||
char *
|
|
||||||
MAH_path_to_url2 (const char *base_url,
|
|
||||||
const char *path);
|
|
||||||
|
|
||||||
|
|
||||||
/* end of auditor_api_handle.h */
|
/* end of auditor_api_handle.h */
|
||||||
|
@ -1415,34 +1415,14 @@ char *
|
|||||||
TEAH_path_to_url (struct TALER_EXCHANGE_Handle *h,
|
TEAH_path_to_url (struct TALER_EXCHANGE_Handle *h,
|
||||||
const char *path)
|
const char *path)
|
||||||
{
|
{
|
||||||
return TEAH_path_to_url2 (h->url,
|
char *ret;
|
||||||
path);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
GNUNET_assert ('/' == path[0]);
|
||||||
/**
|
ret = TALER_url_join (h->url,
|
||||||
* Obtain the URL to use for an API request.
|
path + 1,
|
||||||
* FIXME: duplicates MAH_path_to_url2, and likely also logic in util!
|
NULL);
|
||||||
*
|
GNUNET_assert (NULL != ret);
|
||||||
* @param base_url base URL of the exchange (i.e. "http://exchange/")
|
return ret;
|
||||||
* @param path Taler API path (i.e. "/reserve/withdraw")
|
|
||||||
* @return the full URL to use with cURL
|
|
||||||
*/
|
|
||||||
char *
|
|
||||||
TEAH_path_to_url2 (const char *base_url,
|
|
||||||
const char *path)
|
|
||||||
{
|
|
||||||
char *url;
|
|
||||||
|
|
||||||
if ( ('/' == path[0]) &&
|
|
||||||
(0 < strlen (base_url)) &&
|
|
||||||
('/' == base_url[strlen (base_url) - 1]) )
|
|
||||||
path++; /* avoid generating URL with "//" from concat */
|
|
||||||
GNUNET_asprintf (&url,
|
|
||||||
"%s%s",
|
|
||||||
base_url,
|
|
||||||
path);
|
|
||||||
return url;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -136,17 +136,4 @@ char *
|
|||||||
TEAH_path_to_url (struct TALER_EXCHANGE_Handle *h,
|
TEAH_path_to_url (struct TALER_EXCHANGE_Handle *h,
|
||||||
const char *path);
|
const char *path);
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Obtain the URL to use for an API request.
|
|
||||||
*
|
|
||||||
* @param base_url base URL of the exchange (i.e. "http://exchange/")
|
|
||||||
* @param path Taler API path (i.e. "/reserve/withdraw")
|
|
||||||
* @return the full URL to use with cURL
|
|
||||||
*/
|
|
||||||
char *
|
|
||||||
TEAH_path_to_url2 (const char *base_url,
|
|
||||||
const char *path);
|
|
||||||
|
|
||||||
|
|
||||||
/* end of exchange_api_handle.h */
|
/* end of exchange_api_handle.h */
|
||||||
|
@ -50,7 +50,7 @@ static char *config_filename;
|
|||||||
|
|
||||||
static struct TALER_TESTING_Command
|
static struct TALER_TESTING_Command
|
||||||
transfer_to_exchange (const char *label,
|
transfer_to_exchange (const char *label,
|
||||||
const char *amount)
|
const char *amount)
|
||||||
{
|
{
|
||||||
return TALER_TESTING_cmd_admin_add_incoming (label,
|
return TALER_TESTING_cmd_admin_add_incoming (label,
|
||||||
amount,
|
amount,
|
||||||
@ -59,6 +59,7 @@ transfer_to_exchange (const char *label,
|
|||||||
bc.user42_payto);
|
bc.user42_payto);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main function that will tell the interpreter what commands to
|
* Main function that will tell the interpreter what commands to
|
||||||
* run.
|
* run.
|
||||||
@ -72,37 +73,38 @@ run (void *cls,
|
|||||||
struct TALER_TESTING_Command all[] = {
|
struct TALER_TESTING_Command all[] = {
|
||||||
TALER_TESTING_cmd_check_bank_empty ("expect-empty-transactions-on-start"),
|
TALER_TESTING_cmd_check_bank_empty ("expect-empty-transactions-on-start"),
|
||||||
TALER_TESTING_cmd_exec_aggregator ("run-aggregator-on-empty",
|
TALER_TESTING_cmd_exec_aggregator ("run-aggregator-on-empty",
|
||||||
config_filename),
|
config_filename),
|
||||||
TALER_TESTING_cmd_exec_wirewatch ("run-wirewatch-on-empty",
|
TALER_TESTING_cmd_exec_wirewatch ("run-wirewatch-on-empty",
|
||||||
config_filename),
|
config_filename),
|
||||||
TALER_TESTING_cmd_check_bank_empty ("expect-transfers-empty-after-dry-run"),
|
TALER_TESTING_cmd_check_bank_empty ("expect-transfers-empty-after-dry-run"),
|
||||||
|
|
||||||
transfer_to_exchange ("run-transfer-good-to-exchange",
|
transfer_to_exchange ("run-transfer-good-to-exchange",
|
||||||
"EUR:5"),
|
"EUR:5"),
|
||||||
TALER_TESTING_cmd_exec_wirewatch ("run-wirewatch-on-good-transfer",
|
TALER_TESTING_cmd_exec_wirewatch ("run-wirewatch-on-good-transfer",
|
||||||
config_filename),
|
config_filename),
|
||||||
|
|
||||||
TALER_TESTING_cmd_check_bank_admin_transfer ("clear-good-transfer-to-the-exchange",
|
TALER_TESTING_cmd_check_bank_admin_transfer (
|
||||||
"EUR:5",
|
"clear-good-transfer-to-the-exchange",
|
||||||
bc.user42_payto, // debit
|
"EUR:5",
|
||||||
bc.exchange_payto, // credit
|
bc.user42_payto, // debit
|
||||||
"run-transfer-good-to-exchange"),
|
bc.exchange_payto, // credit
|
||||||
|
"run-transfer-good-to-exchange"),
|
||||||
|
|
||||||
TALER_TESTING_cmd_exec_aggregator ("run-aggregator-non-expired-reserve",
|
TALER_TESTING_cmd_exec_aggregator ("run-aggregator-non-expired-reserve",
|
||||||
config_filename),
|
config_filename),
|
||||||
|
|
||||||
TALER_TESTING_cmd_check_bank_empty ("expect-empty-transactions-1"),
|
TALER_TESTING_cmd_check_bank_empty ("expect-empty-transactions-1"),
|
||||||
TALER_TESTING_cmd_sleep ("wait (5s)",
|
TALER_TESTING_cmd_sleep ("wait (5s)",
|
||||||
5),
|
5),
|
||||||
TALER_TESTING_cmd_exec_aggregator ("run-aggregator-on-expired-reserve",
|
TALER_TESTING_cmd_exec_aggregator ("run-aggregator-on-expired-reserve",
|
||||||
config_filename),
|
config_filename),
|
||||||
TALER_TESTING_cmd_check_bank_transfer ("expect-deposit-1",
|
TALER_TESTING_cmd_check_bank_transfer ("expect-deposit-1",
|
||||||
ec.exchange_url,
|
ec.exchange_url,
|
||||||
"EUR:4.99",
|
"EUR:4.99",
|
||||||
bc.exchange_payto,
|
bc.exchange_payto,
|
||||||
bc.user42_payto),
|
bc.user42_payto),
|
||||||
TALER_TESTING_cmd_check_bank_empty ("expect-empty-transactions-2"),
|
TALER_TESTING_cmd_check_bank_empty ("expect-empty-transactions-2"),
|
||||||
TALER_TESTING_cmd_end ()
|
TALER_TESTING_cmd_end ()
|
||||||
};
|
};
|
||||||
|
|
||||||
TALER_TESTING_run_with_fakebank (is,
|
TALER_TESTING_run_with_fakebank (is,
|
||||||
@ -110,15 +112,13 @@ run (void *cls,
|
|||||||
bc.bank_url);
|
bc.bank_url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc,
|
main (int argc,
|
||||||
char *const argv[])
|
char *const argv[])
|
||||||
{
|
{
|
||||||
const char *plugin_name;
|
const char *plugin_name;
|
||||||
char *testname;
|
char *testname;
|
||||||
struct GNUNET_OS_Process *proc;
|
|
||||||
struct GNUNET_CONFIGURATION_Handle *cfg;
|
|
||||||
struct GNUNET_SIGNAL_Context *shc_chld;
|
|
||||||
|
|
||||||
/* these might get in the way */
|
/* these might get in the way */
|
||||||
unsetenv ("XDG_DATA_HOME");
|
unsetenv ("XDG_DATA_HOME");
|
||||||
@ -157,7 +157,7 @@ main (int argc,
|
|||||||
|
|
||||||
TALER_TESTING_cleanup_files (config_filename);
|
TALER_TESTING_cleanup_files (config_filename);
|
||||||
if (GNUNET_OK != TALER_TESTING_prepare_exchange (config_filename,
|
if (GNUNET_OK != TALER_TESTING_prepare_exchange (config_filename,
|
||||||
&ec))
|
&ec))
|
||||||
{
|
{
|
||||||
TALER_LOG_INFO ("Could not prepare the exchange\n");
|
TALER_LOG_INFO ("Could not prepare the exchange\n");
|
||||||
return 77;
|
return 77;
|
||||||
@ -175,4 +175,5 @@ main (int argc,
|
|||||||
config_filename)) ? 0 : 1;
|
config_filename)) ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* end of test_taler_exchange_wirewatch.c */
|
/* end of test_taler_exchange_wirewatch.c */
|
||||||
|
@ -278,22 +278,20 @@ TALER_url_join (const char *base_url,
|
|||||||
if ('/' != base_url[strlen (base_url) - 1])
|
if ('/' != base_url[strlen (base_url) - 1])
|
||||||
{
|
{
|
||||||
/* Must be an actual base URL! */
|
/* Must be an actual base URL! */
|
||||||
GNUNET_break (0);
|
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
||||||
|
"Base URL `%s' does not end with '/'\n",
|
||||||
|
base_url);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if ('/' == path[0])
|
if ('/' == path[0])
|
||||||
{
|
{
|
||||||
/* The path must be relative. */
|
/* The path must be relative. */
|
||||||
GNUNET_break (0);
|
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
||||||
|
"Path `%s' is not relative\n",
|
||||||
|
path);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Path should be relative to existing path of base URL */
|
|
||||||
GNUNET_break ('/' != path[0]);
|
|
||||||
|
|
||||||
if ('/' == path[0])
|
|
||||||
GNUNET_break (0);
|
|
||||||
|
|
||||||
/* 1st pass: compute length */
|
/* 1st pass: compute length */
|
||||||
len = strlen (base_url) + strlen (path) + 1;
|
len = strlen (base_url) + strlen (path) + 1;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user