Commit 4e017413 by Carlos Martín Nieto

netops: make the path optional in URLs

When we're dealing with proxy addresses, we only want a hostname and
port, and the user would not provide a path, so make it optional so we
can use this same function to parse git as well as proxy URLs.
parent b117721d
......@@ -257,16 +257,18 @@ int gitno_extract_url_parts(
*port = git__strdup(default_port);
GITERR_CHECK_ALLOC(*port);
if (u.field_set & (1 << UF_PATH)) {
*path = git__substrdup(_path, u.field_data[UF_PATH].len);
GITERR_CHECK_ALLOC(*path);
} else {
git__free(*port);
*port = NULL;
git__free(*host);
*host = NULL;
giterr_set(GITERR_NET, "invalid url, missing path");
return GIT_EINVALIDSPEC;
if (path) {
if (u.field_set & (1 << UF_PATH)) {
*path = git__substrdup(_path, u.field_data[UF_PATH].len);
GITERR_CHECK_ALLOC(*path);
} else {
git__free(*port);
*port = NULL;
git__free(*host);
*host = NULL;
giterr_set(GITERR_NET, "invalid url, missing path");
return GIT_EINVALIDSPEC;
}
}
if (u.field_set & (1 << UF_USERINFO)) {
......
......@@ -121,6 +121,15 @@ void test_network_urlparse__user_pass_port(void)
cl_assert_equal_s(pass, "pass");
}
void test_network_urlparse__optional_path(void)
{
cl_git_fail(gitno_extract_url_parts(&host, &port, &path, &user, &pass,
"https://user:pass@example.com:9191", "8080"));
cl_git_pass(gitno_extract_url_parts(&host, &port, NULL, &user, &pass,
"https://user:pass@example.com:9191", "8080"));
}
void test_network_urlparse__connection_data_http(void)
{
cl_git_pass(gitno_connection_data_from_url(&conndata,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment