summaryrefslogtreecommitdiff
path: root/methods/https.cc
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2012-01-30 21:16:56 +0100
committerMichael Vogt <michael.vogt@ubuntu.com>2012-01-30 21:16:56 +0100
commitbdd64a80842fea20d69741cbc01f1929c51a6ed6 (patch)
treea4d680abe2d44987ee939daeb3f691570a2e2ad8 /methods/https.cc
parent6487ecc977eabcca059e4e7fd62545c9826282bd (diff)
parenta13554816fac2ab7c5e876355f7b929790722b2c (diff)
merged from lp:~mvo/apt/mvo (and lp:~donkult/apt/experimental)
Diffstat (limited to 'methods/https.cc')
-rw-r--r--methods/https.cc13
1 files changed, 13 insertions, 0 deletions
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)
{