summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--methods/server.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/methods/server.cc b/methods/server.cc
index aa1ee4754..af7276bad 100644
--- a/methods/server.cc
+++ b/methods/server.cc
@@ -208,8 +208,16 @@ bool ServerState::HeaderLine(string Line)
if (stringcasecmp(Tag,"Connection:") == 0)
{
if (stringcasecmp(Val,"close") == 0)
+ {
Persistent = false;
- if (stringcasecmp(Val,"keep-alive") == 0)
+ Pipeline = false;
+ /* Some servers send error pages (as they are dynamically generated)
+ for simplicity via a connection close instead of e.g. chunked,
+ so assuming an always closing server only if we get a file + close */
+ if (Result >= 200 && Result < 300)
+ PipelineAllowed = false;
+ }
+ else if (stringcasecmp(Val,"keep-alive") == 0)
Persistent = true;
return true;
}