Unverified Commit b5dcdad3 by Edward Thomson Committed by GitHub

Merge pull request #5852 from implausible/httpclient/skip-entire-body

Fix issues with Proxy Authentication after httpclient refactor
parents 3532c5f4 3473a088
...@@ -681,6 +681,11 @@ static int generate_connect_request( ...@@ -681,6 +681,11 @@ static int generate_connect_request(
return git_buf_oom(buf) ? -1 : 0; return git_buf_oom(buf) ? -1 : 0;
} }
static bool use_connect_proxy(git_http_client *client)
{
return client->proxy.url.host && !strcmp(client->server.url.scheme, "https");
}
static int generate_request( static int generate_request(
git_http_client *client, git_http_client *client,
git_http_request *request) git_http_request *request)
...@@ -734,7 +739,8 @@ static int generate_request( ...@@ -734,7 +739,8 @@ static int generate_request(
git_buf_printf(buf, "Expect: 100-continue\r\n"); git_buf_printf(buf, "Expect: 100-continue\r\n");
if ((error = apply_server_credentials(buf, client, request)) < 0 || if ((error = apply_server_credentials(buf, client, request)) < 0 ||
(error = apply_proxy_credentials(buf, client, request)) < 0) (!use_connect_proxy(client) &&
(error = apply_proxy_credentials(buf, client, request)) < 0))
return error; return error;
if (request->custom_headers) { if (request->custom_headers) {
...@@ -1027,8 +1033,7 @@ static int http_client_connect( ...@@ -1027,8 +1033,7 @@ static int http_client_connect(
reset_parser(client); reset_parser(client);
/* Reconnect to the proxy if necessary. */ /* Reconnect to the proxy if necessary. */
use_proxy = client->proxy.url.host && use_proxy = use_connect_proxy(client);
!strcmp(client->server.url.scheme, "https");
if (use_proxy) { if (use_proxy) {
if (!client->proxy_connected || !client->keepalive || if (!client->proxy_connected || !client->keepalive ||
...@@ -1503,7 +1508,7 @@ int git_http_client_skip_body(git_http_client *client) ...@@ -1503,7 +1508,7 @@ int git_http_client_skip_body(git_http_client *client)
"unexpected data handled in callback"); "unexpected data handled in callback");
error = -1; error = -1;
} }
} while (!error); } while (error >= 0 && client->state != DONE);
if (error < 0) if (error < 0)
client->connected = 0; client->connected = 0;
......
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