git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] remote-curl: ensure that URLs do not have a trailing slash

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 7, 2010, 15:12 UTC
Message-ID
<7viq83e1pd.fsf@alter.siamese.dyndns.org>
In-Reply-To
<1270651892-5712-1-git-send-email-rctay89@gmail.com>
Tay Ray Chuan <rctay89@gmail.com> writes:
Show 39 quoted lines
> Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
> ---
>  remote-curl.c |    9 ++++++---
>  1 files changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/remote-curl.c b/remote-curl.c
> index 0782756..0f21f8a 100644
> --- a/remote-curl.c
> +++ b/remote-curl.c
> @@ -101,7 +101,8 @@ static struct discovery* discover_refs(const char *service)
>  		return last;
>  	free_discovery(last);
>  
> -	strbuf_addf(&buffer, "%s/info/refs", url);
> +	end_url_with_slash(&buffer, url);
> +	strbuf_addstr(&buffer, "info/refs");
>  	if (!prefixcmp(url, "http://") || !prefixcmp(url, "https://")) {
>  		is_http = 1;
>  		if (!strchr(url, '?'))
> @@ -120,7 +121,8 @@ static struct discovery* discover_refs(const char *service)
>  		strbuf_reset(&buffer);
>  
>  		proto_git_candidate = 0;
> -		strbuf_addf(&buffer, "%s/info/refs", url);
> +		end_url_with_slash(&buffer, url);
> +		strbuf_addstr(&buffer, "info/refs");
>  		refs_url = strbuf_detach(&buffer, NULL);
>  
>  		http_ret = http_get_strbuf(refs_url, &buffer, HTTP_NO_CACHE);
> @@ -511,7 +513,8 @@ 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);
> +	end_url_with_slash(&buf, url)
> +	strbuf_addf(&buf, "%s", svc);
>  	rpc->service_url = strbuf_detach(&buf, NULL);
>  
>  	strbuf_addf(&buf, "Content-Type: application/x-%s-request", svc);

The code does not look like it is making sure things do not have a trailing slash. For example, if svc has trailing slash, either %s/%s or strbuf_addf() would have the last character of svc in rpc->service_url.

You are fixing something else.

The new code avoids duplicated slashes in the middle if "url" can but does not necessarily end with a slash. Is that what you are trying to fix? I wonder if it makes more sense to make sure "url" always ends with a slash at the calling sites where it is obtained from either the end user or from the running environment...

Previous: Tay Ray ChuanNext: Tay Ray Chuan
Message 2 of 10 in “remote-curl: ensure that URLs do not have a trailing slash”
  1. remote-curl: ensure that URLs do not have a trailing slashTay Ray Chuan, Apr 7, 2010
  2. Junio C HamanoApr 7, 2010
  3. Tay Ray ChuanApr 7, 2010
  4. 1/2 http: make end_url_with_slash() publicTay Ray Chuan, Apr 7, 2010
  5. 1/2 http: make end_url_with_slash() publicTay Ray Chuan, Apr 7, 2010
  6. 2/2 remote-curl: ensure that URLs have a trailing slashTay Ray Chuan, Apr 7, 2010
  7. Junio C HamanoApr 7, 2010
  8. 1/3 t5541-http-push: add test for URLs with trailing slashTay Ray Chuan, Apr 8, 2010
  9. 2/3 http: make end_url_with_slash() publicTay Ray Chuan, Apr 8, 2010
  10. 3/3 remote-curl: ensure that URLs have a trailing slashTay Ray Chuan, Apr 8, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.