diff options
Diffstat (limited to 'python/Python-2.6.1-urllib.patch')
-rw-r--r-- | python/Python-2.6.1-urllib.patch | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/python/Python-2.6.1-urllib.patch b/python/Python-2.6.1-urllib.patch new file mode 100644 index 000000000000..6e20390860a4 --- /dev/null +++ b/python/Python-2.6.1-urllib.patch @@ -0,0 +1,93 @@ +--- misc/Python-2.6.1/Lib/urllib.py 2008-09-21 23:27:51.000000000 +0200 ++++ misc/build/Python-2.6.1/Lib/urllib.py 2010-11-23 15:41:08.000000000 +0100 +@@ -176,6 +176,9 @@ class URLopener: + def open(self, fullurl, data=None): + """Use URLopener().open(file) instead of open(file, 'r').""" + fullurl = unwrap(toBytes(fullurl)) ++ # percent encode url. fixing lame server errors like space within url ++ # parts ++ fullurl = quote(fullurl, safe="%/:=&?~#+!$,;'@()*[]|") + if self.tempcache and fullurl in self.tempcache: + filename, headers = self.tempcache[fullurl] + fp = open(filename, 'rb') +@@ -233,41 +236,45 @@ class URLopener: + except IOError, msg: + pass + fp = self.open(url, data) +- headers = fp.info() +- if filename: +- tfp = open(filename, 'wb') +- else: +- import tempfile +- garbage, path = splittype(url) +- garbage, path = splithost(path or "") +- path, garbage = splitquery(path or "") +- path, garbage = splitattr(path or "") +- suffix = os.path.splitext(path)[1] +- (fd, filename) = tempfile.mkstemp(suffix) +- self.__tempfiles.append(filename) +- tfp = os.fdopen(fd, 'wb') +- result = filename, headers +- if self.tempcache is not None: +- self.tempcache[url] = result +- bs = 1024*8 +- size = -1 +- read = 0 +- blocknum = 0 +- if reporthook: +- if "content-length" in headers: +- size = int(headers["Content-Length"]) +- reporthook(blocknum, bs, size) +- while 1: +- block = fp.read(bs) +- if block == "": +- break +- read += len(block) +- tfp.write(block) +- blocknum += 1 +- if reporthook: +- reporthook(blocknum, bs, size) +- fp.close() +- tfp.close() ++ try: ++ headers = fp.info() ++ if filename: ++ tfp = open(filename, 'wb') ++ else: ++ import tempfile ++ garbage, path = splittype(url) ++ garbage, path = splithost(path or "") ++ path, garbage = splitquery(path or "") ++ path, garbage = splitattr(path or "") ++ suffix = os.path.splitext(path)[1] ++ (fd, filename) = tempfile.mkstemp(suffix) ++ self.__tempfiles.append(filename) ++ tfp = os.fdopen(fd, 'wb') ++ try: ++ result = filename, headers ++ if self.tempcache is not None: ++ self.tempcache[url] = result ++ bs = 1024*8 ++ size = -1 ++ read = 0 ++ blocknum = 0 ++ if reporthook: ++ if "content-length" in headers: ++ size = int(headers["Content-Length"]) ++ reporthook(blocknum, bs, size) ++ while 1: ++ block = fp.read(bs) ++ if block == "": ++ break ++ read += len(block) ++ tfp.write(block) ++ blocknum += 1 ++ if reporthook: ++ reporthook(blocknum, bs, size) ++ finally: ++ tfp.close() ++ finally: ++ fp.close() + del fp + del tfp + |