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:
Junio C Hamano 2018-05-30 21:51:29 +09:00
Родитель e47dbece39 eaf6a1b6e9
Коммит 13e8be95db
3 изменённых файлов: 12 добавлений и 6 удалений

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' '