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

Re: [PATCH 3/6] http: fix http_proxy specified without protocol part

From
Jeff King <peff@peff.net>
Date
May 4, 2012, 07:22 UTC
Message-ID
<20120504072220.GC21895@sigill.intra.peff.net>
In-Reply-To
<4FA2B4E6.3080009@seap.minhap.es>
On Thu, May 03, 2012 at 06:40:06PM +0200, Nelson Benitez Leon wrote:
Show 10 quoted lines
> An earlier patch broke http_proxy specified as <host>:<port> by abusing
> credential_from_url().  Teach the function to parse that format, but the
> caller needs to be updated to handle the case where there is no protocol
> in the parse result.
> 
> Also allow keyring implementations to differentiate authentication
> material meant for http proxies and http destinations by using a
> different token "http-proxy" to consult them for the former.
> 
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Should this be:
  From: Junio C Hamano <gitster@pobox.com>
?

Also, any time we read "an earlier patch broke..." and that earlier patch is in this series, I have to wonder why the patches are not simply reordered. Shouldn't the first half of this one come first, and just explain the rationale as "teach credential_from_url to handle protocol-less URLs, since those are used for proxy specifications, which we will need to parse in a later patch".

Show 19 quoted lines
> diff --git a/http.c b/http.c
> index 02f9fcd..22ffe0c 100644
> --- a/http.c
> +++ b/http.c
> @@ -366,17 +366,20 @@ static CURL *get_curl_handle(const char *url)
>  	}
>  	
>  	if (curl_http_proxy) {
> -		struct strbuf proxyhost = STRBUF_INIT;
> -
> -		if (!proxy_auth.host) /* check to parse only once */
> +		if (!proxy_auth.host) {
>  			credential_from_url(&proxy_auth, curl_http_proxy);
> +			if (!proxy_auth.protocol ||
> +			    !strcmp(proxy_auth.protocol, "http")) {
> +				free(proxy_auth.protocol);
> +				proxy_auth.protocol = xstrdup("http-proxy");
> +			}
> +		}
And then this hunk would just get squashed in in the first place.
Show 7 quoted lines
>  		if (http_proactive_auth && proxy_auth.username && !proxy_auth.password)
>  			/* proxy string has username but no password, ask for password */
>  			credential_fill(&proxy_auth);
>  
> -		strbuf_addf(&proxyhost, "%s://%s", proxy_auth.protocol, proxy_auth.host);
> -		curl_easy_setopt(result, CURLOPT_PROXY, strbuf_detach(&proxyhost, NULL));
> +		curl_easy_setopt(result, CURLOPT_PROXY, curl_http_proxy);
And this too, which gets rid of my complaints about the previous patch.
-Peff
Previous: Nelson Benitez Leon
Message 2 of 2 in “http: fix http_proxy specified without protocol part”
  1. 3/6 http: fix http_proxy specified without protocol partNelson Benitez Leon, May 3, 2012
  2. Jeff KingMay 4, 2012

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.