]> git.saurik.com Git - apt.git/commitdiff
http: don't hang on redirect with length + connection close
authorDavid Kalnischkies <david@kalnischkies.de>
Wed, 15 Jun 2016 10:45:07 +0000 (12:45 +0200)
committerDavid Kalnischkies <david@kalnischkies.de>
Wed, 15 Jun 2016 11:38:51 +0000 (13:38 +0200)
Most servers who close the connection do not send a content-length as
this is redundant information usually, but some might and while testing
with our server and with 'aptwebserver::response-header::Connection' set
to 'close' I noticed that http hangs after a redirect in such cases, so
if we have the information, just use it instead of discarding it.

methods/http.cc

index b861e61ee9ea737e727efd4a6094550aaead4235..fc54ece3ad2c42155d458ded77d991964751fd66 100644 (file)
@@ -441,12 +441,12 @@ bool HttpServerState::RunData(FileFd * const File)
    {
       /* Closes encoding is used when the server did not specify a size, the
          loss of the connection means we are done */
-      if (Persistent == false)
-        In.Limit(-1);
-      else if (JunkSize != 0)
+      if (JunkSize != 0)
         In.Limit(JunkSize);
-      else
+      else if (DownloadSize != 0)
         In.Limit(DownloadSize);
+      else if (Persistent == false)
+        In.Limit(-1);
       
       // Just transfer the whole block.
       do