From: Fredrik Tolf Date: Wed, 19 Dec 2012 05:24:35 +0000 (+0100) Subject: Merge branch 'master' into jython X-Git-Url: http://dolda2000.com/gitweb/?p=wrw.git;a=commitdiff_plain;h=809f0edc1d621010d0cf62ced892f13ee24fde8e;hp=-c Merge branch 'master' into jython Conflicts: wrw/req.py --- 809f0edc1d621010d0cf62ced892f13ee24fde8e diff --combined wrw/req.py index b65a0b9,5fbc2fe..fbe732b --- a/wrw/req.py +++ b/wrw/req.py @@@ -1,4 -1,4 +1,4 @@@ -import io +import StringIO __all__ = ["request"] @@@ -56,7 -56,7 +56,7 @@@ class limitreader(object) self.bk = back self.limit = limit self.rb = 0 - self.buf = bytearray() + self.buf = "" def close(self): pass @@@ -69,9 -69,9 +69,9 @@@ ret = self.bk.read(ra - len(self.buf)) if ret == "": raise IOError("Unexpected EOF") - self.buf.extend(ret) + self.buf += ret self.rb += len(ret) - ret = str(self.buf[:ra]) + ret = self.buf[:ra] self.buf = self.buf[ra:] return ret @@@ -80,17 -80,17 +80,17 @@@ while True: p = self.buf.find('\n', off) if p >= 0: - ret = str(self.buf[:p + 1]) + ret = self.buf[:p + 1] self.buf = self.buf[p + 1:] return ret off = len(self.buf) if size >= 0 and len(self.buf) >= size: - ret = str(self.buf[:size]) + ret = self.buf[:size] self.buf = self.buf[size:] return ret if self.rb == self.limit: - ret = str(self.buf) - self.buf = bytearray() + ret = self.buf + self.buf = "" return ret ra = self.limit - self.rb if size >= 0: @@@ -99,7 -99,7 +99,7 @@@ ret = self.bk.read(ra) if ret == "": raise IOError("Unpexpected EOF") - self.buf.extend(ret) + self.buf += ret self.rb += len(ret) def readlines(self, hint=None): @@@ -140,15 -140,20 +140,20 @@@ class origrequest(request) self.servername = env["SERVER_NAME"] self.https = "HTTPS" in env self.ihead = headdict() - self.input = None if "CONTENT_TYPE" in env: self.ihead["Content-Type"] = env["CONTENT_TYPE"] - if "CONTENT_LENGTH" in env: - clen = self.ihead["Content-Length"] = env["CONTENT_LENGTH"] - if clen.isdigit(): - self.input = limitreader(env["wsgi.input"], int(clen)) - if self.input is None: - self.input = StringIO.StringIO("") + if "CONTENT_LENGTH" in env: + clen = self.ihead["Content-Length"] = env["CONTENT_LENGTH"] + if clen.isdigit(): + self.input = limitreader(env["wsgi.input"], int(clen)) + else: + # XXX: What to do? - self.input = io.BytesIO("") ++ self.input = StringIO.StringIO("") + else: + # Assume input is chunked and read until ordinary EOF. + self.input = env["wsgi.input"] + else: + self.input = None self.ohead = headdict() for k, v in env.items(): if k[:5] == "HTTP_":