]> git.saurik.com Git - apt.git/blobdiff - methods/server.cc
get pdiff files from the same mirror as the index
[apt.git] / methods / server.cc
index aa1ee47543e0f7080b01f6869861ca7ca31626a6..0408dddfd3f8dfbb8ef395f1b3d8935e8cac712e 100644 (file)
@@ -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;
    }
@@ -762,8 +770,8 @@ int ServerMethod::Loop()
         // We need to flush the data, the header is like a 404 w/ error text
         case ERROR_WITH_CONTENT_PAGE:
         {
-           Fail();
            Server->RunDataToDevNull();
+           Fail();
            break;
         }