Merge branch 'master' into jython
authorFredrik Tolf <fredrik@dolda2000.com>
Wed, 19 Dec 2012 05:24:35 +0000 (06:24 +0100)
committerFredrik Tolf <fredrik@dolda2000.com>
Wed, 19 Dec 2012 05:24:35 +0000 (06:24 +0100)
Conflicts:
wrw/req.py

1  2 
wrw/req.py

diff --combined 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
  
          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_":