зеркало из https://github.com/microsoft/git.git
Merge branch 'bw/remote-curl-compressed-responses'
Our HTTP client code used to advertise that we accept gzip encoding from the other side; instead, just let cURL library to advertise and negotiate the best one. * bw/remote-curl-compressed-responses: remote-curl: accept compressed responses with protocol v2 remote-curl: accept all encodings supported by curl
This commit is contained in:
Коммит
13e8be95db
2
http.c
2
http.c
|
@ -1788,7 +1788,7 @@ static int http_request(const char *url,
|
||||||
|
|
||||||
curl_easy_setopt(slot->curl, CURLOPT_URL, url);
|
curl_easy_setopt(slot->curl, CURLOPT_URL, url);
|
||||||
curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, headers);
|
curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, headers);
|
||||||
curl_easy_setopt(slot->curl, CURLOPT_ENCODING, "gzip");
|
curl_easy_setopt(slot->curl, CURLOPT_ENCODING, "");
|
||||||
|
|
||||||
ret = run_one_slot(slot, &results);
|
ret = run_one_slot(slot, &results);
|
||||||
|
|
||||||
|
|
|
@ -684,7 +684,7 @@ retry:
|
||||||
curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0);
|
curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0);
|
||||||
curl_easy_setopt(slot->curl, CURLOPT_POST, 1);
|
curl_easy_setopt(slot->curl, CURLOPT_POST, 1);
|
||||||
curl_easy_setopt(slot->curl, CURLOPT_URL, rpc->service_url);
|
curl_easy_setopt(slot->curl, CURLOPT_URL, rpc->service_url);
|
||||||
curl_easy_setopt(slot->curl, CURLOPT_ENCODING, "gzip");
|
curl_easy_setopt(slot->curl, CURLOPT_ENCODING, "");
|
||||||
|
|
||||||
if (large_request) {
|
if (large_request) {
|
||||||
/* The request body is large and the size cannot be predicted.
|
/* The request body is large and the size cannot be predicted.
|
||||||
|
@ -1259,6 +1259,7 @@ static int proxy_request(struct proxy_state *p)
|
||||||
|
|
||||||
slot = get_active_slot();
|
slot = get_active_slot();
|
||||||
|
|
||||||
|
curl_easy_setopt(slot->curl, CURLOPT_ENCODING, "");
|
||||||
curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0);
|
curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0);
|
||||||
curl_easy_setopt(slot->curl, CURLOPT_POST, 1);
|
curl_easy_setopt(slot->curl, CURLOPT_POST, 1);
|
||||||
curl_easy_setopt(slot->curl, CURLOPT_URL, p->service_url);
|
curl_easy_setopt(slot->curl, CURLOPT_URL, p->service_url);
|
||||||
|
|
|
@ -26,14 +26,14 @@ setup_askpass_helper
|
||||||
cat >exp <<EOF
|
cat >exp <<EOF
|
||||||
> GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1
|
> GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1
|
||||||
> Accept: */*
|
> Accept: */*
|
||||||
> Accept-Encoding: gzip
|
> Accept-Encoding: ENCODINGS
|
||||||
> Pragma: no-cache
|
> Pragma: no-cache
|
||||||
< HTTP/1.1 200 OK
|
< HTTP/1.1 200 OK
|
||||||
< Pragma: no-cache
|
< Pragma: no-cache
|
||||||
< Cache-Control: no-cache, max-age=0, must-revalidate
|
< Cache-Control: no-cache, max-age=0, must-revalidate
|
||||||
< Content-Type: application/x-git-upload-pack-advertisement
|
< Content-Type: application/x-git-upload-pack-advertisement
|
||||||
> POST /smart/repo.git/git-upload-pack HTTP/1.1
|
> POST /smart/repo.git/git-upload-pack HTTP/1.1
|
||||||
> Accept-Encoding: gzip
|
> Accept-Encoding: ENCODINGS
|
||||||
> Content-Type: application/x-git-upload-pack-request
|
> Content-Type: application/x-git-upload-pack-request
|
||||||
> Accept: application/x-git-upload-pack-result
|
> Accept: application/x-git-upload-pack-result
|
||||||
> Content-Length: xxx
|
> Content-Length: xxx
|
||||||
|
@ -79,8 +79,13 @@ test_expect_success 'clone http repository' '
|
||||||
/^< Date: /d
|
/^< Date: /d
|
||||||
/^< Content-Length: /d
|
/^< Content-Length: /d
|
||||||
/^< Transfer-Encoding: /d
|
/^< Transfer-Encoding: /d
|
||||||
" >act &&
|
" >actual &&
|
||||||
test_cmp exp act
|
sed -e "s/^> Accept-Encoding: .*/> Accept-Encoding: ENCODINGS/" \
|
||||||
|
actual >actual.smudged &&
|
||||||
|
test_cmp exp actual.smudged &&
|
||||||
|
|
||||||
|
grep "Accept-Encoding:.*gzip" actual >actual.gzip &&
|
||||||
|
test_line_count = 2 actual.gzip
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'fetch changes via http' '
|
test_expect_success 'fetch changes via http' '
|
||||||
|
|
Загрузка…
Ссылка в новой задаче