Fix for SF bug 988120 via patch 1061941.
authorJeremy Hylton <jeremy@alum.mit.edu>
Sun, 7 Nov 2004 16:13:49 +0000 (16:13 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Sun, 7 Nov 2004 16:13:49 +0000 (16:13 +0000)
If read() returned less than the number of bytes request, the full amount was subtracted from length instead of the actually read amount.

Lib/httplib.py
Misc/ACKS

index 72e8a72539885b619e254b439fe7a1b0c9e4511f..01fc1eef8f760c5a9fd8891f054f82283bf047ae 100644 (file)
@@ -457,10 +457,11 @@ class HTTPResponse:
 
         if amt is None:
             # unbounded read
-            if self.will_close:
+            if self.length is None:
                 s = self.fp.read()
             else:
                 s = self._safe_read(self.length)
+                self.length = 0
             self.close()        # we read everything
             return s
 
@@ -468,12 +469,13 @@ class HTTPResponse:
             if amt > self.length:
                 # clip the read to the "end of response"
                 amt = self.length
-            self.length -= amt
 
         # we do not use _safe_read() here because this may be a .will_close
         # connection, and the user is reading more bytes than will be provided
         # (for example, reading in 1k chunks)
         s = self.fp.read(amt)
+        if self.length is not None:
+            self.length -= len(s)
 
         return s
 
index 58dd0adbb8ea9ad813949bb94fe1320fdf6fe83c..b2528f7fa982837cc01608bdecc3bb99d24c6248 100644 (file)
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -302,6 +302,7 @@ Jiba
 Orjan Johansen
 Simon Johnston
 Richard Jones
+Irmen de Jong
 Lucas de Jonge
 Jens B. Jorgensen
 John Jorgensen