diff options
author | Georg Brandl <georg@python.org> | 2005-09-29 20:16:07 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2005-09-29 20:16:07 (GMT) |
commit | 80ba8e85490515c293959a4196cbd99b1b3819a2 (patch) | |
tree | e4d022b8ad033e2128a52a9db46315caf80481a8 /Lib/httplib.py | |
parent | e677adc43acf9176ffe81b9956aeb7a643258239 (diff) | |
download | cpython-80ba8e85490515c293959a4196cbd99b1b3819a2.zip cpython-80ba8e85490515c293959a4196cbd99b1b3819a2.tar.gz cpython-80ba8e85490515c293959a4196cbd99b1b3819a2.tar.bz2 |
bug [ 1296004 ] MemoryError in httplib
Diffstat (limited to 'Lib/httplib.py')
-rw-r--r-- | Lib/httplib.py | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/Lib/httplib.py b/Lib/httplib.py index e017cdf..5c82edd 100644 --- a/Lib/httplib.py +++ b/Lib/httplib.py @@ -153,6 +153,9 @@ HTTP_VERSION_NOT_SUPPORTED = 505 INSUFFICIENT_STORAGE = 507 NOT_EXTENDED = 510 +# maximal amount of data to read at one time in _safe_read +MAXAMOUNT = 1048576 + class HTTPMessage(mimetools.Message): def addheader(self, key, value): @@ -541,14 +544,14 @@ class HTTPResponse: reading. If the bytes are truly not available (due to EOF), then the IncompleteRead exception can be used to detect the problem. """ - s = '' + s = [] while amt > 0: - chunk = self.fp.read(amt) + chunk = self.fp.read(min(amt, MAXAMOUNT)) if not chunk: raise IncompleteRead(s) - s += chunk + s.append(chunk) amt -= len(chunk) - return s + return ''.join(s) def getheader(self, name, default=None): if self.msg is None: |