diff options
-rw-r--r-- | remote-curl.c | 14 | ||||
-rwxr-xr-x | t/t5541-http-push.sh | 2 |
2 files changed, 9 insertions, 7 deletions
diff --git a/remote-curl.c b/remote-curl.c index a904164e42..1fe59d6db0 100644 --- a/remote-curl.c +++ b/remote-curl.c @@ -9,7 +9,7 @@ #include "sideband.h" static struct remote *remote; -static const char *url; +static const char *url; /* always ends with a trailing slash */ static struct walker *walker; struct options { @@ -108,7 +108,7 @@ static struct discovery* discover_refs(const char *service) return last; free_discovery(last); - strbuf_addf(&buffer, "%s/info/refs", url); + strbuf_addf(&buffer, "%sinfo/refs", url); if (!prefixcmp(url, "http://") || !prefixcmp(url, "https://")) { is_http = 1; if (!strchr(url, '?')) @@ -128,7 +128,7 @@ static struct discovery* discover_refs(const char *service) strbuf_reset(&buffer); proto_git_candidate = 0; - strbuf_addf(&buffer, "%s/info/refs", url); + strbuf_addf(&buffer, "%sinfo/refs", url); refs_url = strbuf_detach(&buffer, NULL); http_ret = http_get_strbuf(refs_url, &buffer, HTTP_NO_CACHE); @@ -518,7 +518,7 @@ static int rpc_service(struct rpc_state *rpc, struct discovery *heads) rpc->out = client.out; strbuf_init(&rpc->result, 0); - strbuf_addf(&buf, "%s/%s", url, svc); + strbuf_addf(&buf, "%s%s", url, svc); rpc->service_url = strbuf_detach(&buf, NULL); strbuf_addf(&buf, "Content-Type: application/x-%s-request", svc); @@ -805,11 +805,13 @@ int main(int argc, const char **argv) remote = remote_get(argv[1]); if (argc > 2) { - url = argv[2]; + end_url_with_slash(&buf, argv[2]); } else { - url = remote->url[0]; + end_url_with_slash(&buf, remote->url[0]); } + url = strbuf_detach(&buf, NULL); + do { if (strbuf_getline(&buf, stdin, '\n') == EOF) break; diff --git a/t/t5541-http-push.sh b/t/t5541-http-push.sh index 7873d9429a..f0c50d3d77 100755 --- a/t/t5541-http-push.sh +++ b/t/t5541-http-push.sh @@ -38,7 +38,7 @@ cat >exp <<EOF GET /smart/test_repo.git/info/refs?service=git-upload-pack HTTP/1.1 200 POST /smart/test_repo.git/git-upload-pack HTTP/1.1 200 EOF -test_expect_failure 'no empty path components' ' +test_expect_success 'no empty path components' ' # In the URL, add a trailing slash, and see if git appends yet another # slash. cd "$ROOT_PATH" && |