summaryrefslogtreecommitdiff
path: root/methods
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2021-09-16 19:33:24 +0200
committerDavid Kalnischkies <david@kalnischkies.de>2021-09-16 22:38:46 +0200
commit61c1d7d3658fdcd4b32f8b071cef7941120f8abc (patch)
tree0c98275aabc5b839becc3b5d589d62b9f67a6595 /methods
parent883a12310a4130370965eab0a710a2c8fae6cc09 (diff)
Add AllowRange option to disable HTTP Range usage
apt makes heavy usage of HTTP1.1 features including Range and If-Range. Sadly it is not obvious if the involved server(s) (and proxies) actually support them all. The Acquire::http::AllowRange option defaults to true as before, but now a user can disable Range usage if it is known that the involved server is not dealing with such requests correctly.
Diffstat (limited to 'methods')
-rw-r--r--methods/basehttp.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/methods/basehttp.cc b/methods/basehttp.cc
index f2c4156e1..396b33999 100644
--- a/methods/basehttp.cc
+++ b/methods/basehttp.cc
@@ -246,7 +246,7 @@ bool RequestState::HeaderLine(string const &Line) /*{{{*/
return true;
}
- if (stringcasecmp(Tag, "Accept-Ranges:") == 0)
+ if (Server->RangesAllowed && stringcasecmp(Tag, "Accept-Ranges:") == 0)
{
std::string ranges = ',' + Val + ',';
ranges.erase(std::remove(ranges.begin(), ranges.end(), ' '), ranges.end());
@@ -276,7 +276,6 @@ void ServerState::Reset() /*{{{*/
Persistent = false;
Pipeline = false;
PipelineAllowed = true;
- RangesAllowed = true;
PipelineAnswersReceived = 0;
}
/*}}}*/
@@ -607,6 +606,7 @@ int BaseHttpMethod::Loop()
setPostfixForMethodNames(::URI(Queue->Uri).Host.c_str());
AllowRedirect = ConfigFindB("AllowRedirect", true);
PipelineDepth = ConfigFindI("Pipeline-Depth", 10);
+ Server->RangesAllowed = ConfigFindB("AllowRanges", true);
Debug = DebugEnabled();
}