diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2012-01-31 11:21:02 +0100 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2012-01-31 11:21:02 +0100 |
commit | c7ed2c0e34546e12a035e4c4c2f034a6ee765748 (patch) | |
tree | dcfd5eb735b8ea547142be68f993a3f555ecb0b0 /methods | |
parent | 3102af74e7ffaab3f47741c05451ce7f0e3b38fe (diff) | |
parent | b9ed63d39e8771f42ec74e3ad401b7c1e846b206 (diff) |
merged from lp:~donkult/apt/experimental/
Diffstat (limited to 'methods')
-rw-r--r-- | methods/http.cc | 14 | ||||
-rw-r--r-- | methods/https.cc | 13 |
2 files changed, 26 insertions, 1 deletions
diff --git a/methods/http.cc b/methods/http.cc index b8ed43cd2..2721b1224 100644 --- a/methods/http.cc +++ b/methods/http.cc @@ -716,7 +716,19 @@ void HttpMethod::SendReq(FetchItem *Itm,CircleBuf &Out) } } - + // If we ask for uncompressed files servers might respond with content- + // negotation which lets us end up with compressed files we do not support, + // see 657029, 657560 and co, so if we have no extension on the request + // ask for text only. As a sidenote: If there is nothing to negotate servers + // seem to be nice and ignore it. + if (_config->FindB("Acquire::http::SendAccept", true) == true) + { + size_t const filepos = Itm->Uri.find_last_of('/'); + string const file = Itm->Uri.substr(filepos + 1); + if (flExtension(file) == file) + strcat(Buf,"Accept: text/*\r\n"); + } + string Req = Buf; // Check for a partial file diff --git a/methods/https.cc b/methods/https.cc index 6de18b8e0..4f2d581d2 100644 --- a/methods/https.cc +++ b/methods/https.cc @@ -242,6 +242,19 @@ bool HttpsMethod::Fetch(FetchItem *Itm) // error handling curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_errorstr); + // If we ask for uncompressed files servers might respond with content- + // negotation which lets us end up with compressed files we do not support, + // see 657029, 657560 and co, so if we have no extension on the request + // ask for text only. As a sidenote: If there is nothing to negotate servers + // seem to be nice and ignore it. + if (_config->FindB("Acquire::https::SendAccept", _config->FindB("Acquire::http::SendAccept", true)) == true) + { + size_t const filepos = Itm->Uri.find_last_of('/'); + string const file = Itm->Uri.substr(filepos + 1); + if (flExtension(file) == file) + headers = curl_slist_append(headers, "Accept: text/*"); + } + // if we have the file send an if-range query with a range header if (stat(Itm->DestFile.c_str(),&SBuf) >= 0 && SBuf.st_size > 0) { |