From 3d875f561955d09327756bfb27a7c5228173045b Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Thu, 29 Sep 2005 20:16:12 +0000 Subject: backport bug [ 1296004 ] MemoryError in httplib --- Lib/httplib.py | 11 +++++++---- Misc/NEWS | 6 ++++++ 2 files changed, 13 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: diff --git a/Misc/NEWS b/Misc/NEWS index 5c054e0..d2088cd 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -14,6 +14,12 @@ Extension Modules - Fix parse errors in the readline module when compiling without threads. +Library +------- + +- Bug #1296004: httplib.py: Limit maximal amount of data read from the + socket to avoid a MemoryError on Windows. + What's New in Python 2.4.2 final? ================================= -- cgit v0.12