From: Ryan Hendrickson <ryan.hendrickson@xxxxxxxxxxxx> The documentation for `http.proxy` describes that option, and the environment variables it overrides, as supporting "the syntax understood by curl". curl allows SOCKS proxies to use a path to a Unix domain socket, like `socks5h://localhost/path/to/socket.sock`. Git should therefore include, if present, the path part of the proxy URL in what it passes to libcurl. Signed-off-by: Ryan Hendrickson <ryan.hendrickson@xxxxxxxxxxxx> --- http: do not ignore proxy path * Documentation: do I need to add anything? * Tests: I could use a pointer on how best to add a test for this. Adding a case to t5564-http-proxy.sh seems straightforward but I don't think httpd can be configured to listen to domain sockets; can I use netcat? Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1767%2Frhendric%2Frhendric%2Fhttp-proxy-path-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1767/rhendric/rhendric/http-proxy-path-v1 Pull-Request: https://github.com/gitgitgadget/git/pull/1767 http.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/http.c b/http.c index 623ed234891..0cd75986a6b 100644 --- a/http.c +++ b/http.c @@ -1265,7 +1265,13 @@ static CURL *get_curl_handle(void) if (!proxy_auth.host) die("Invalid proxy URL '%s'", curl_http_proxy); - curl_easy_setopt(result, CURLOPT_PROXY, proxy_auth.host); + if (proxy_auth.path) { + struct strbuf proxy = STRBUF_INIT; + strbuf_addf(&proxy, "%s/%s", proxy_auth.host, proxy_auth.path); + curl_easy_setopt(result, CURLOPT_PROXY, proxy.buf); + strbuf_release(&proxy); + } else + curl_easy_setopt(result, CURLOPT_PROXY, proxy_auth.host); var_override(&curl_no_proxy, getenv("NO_PROXY")); var_override(&curl_no_proxy, getenv("no_proxy")); curl_easy_setopt(result, CURLOPT_NOPROXY, curl_no_proxy); base-commit: ad57f148c6b5f8735b62238dda8f571c582e0e54 -- gitgitgadget