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

1  2 
wrw/req.py

diff --combined wrw/req.py
@@@ -19,7 -19,7 +19,7 @@@ class headdict(object)
          del self.dict[key.lower()]
  
      def __iter__(self):
 -        return iter((list[0] for list in self.dict.itervalues()))
 +        return iter((list[0] for list in self.dict.values()))
      
      def get(self, key, default = ""):
          if key.lower() in self.dict:
@@@ -67,29 -67,29 +67,29 @@@ class limitreader(object)
              ra = min(ra, size)
          while len(self.buf) < ra:
              ret = self.bk.read(ra - len(self.buf))
 -            if ret == "":
 +            if ret == b"":
                  raise IOError("Unexpected EOF")
              self.buf.extend(ret)
              self.rb += len(ret)
 -        ret = str(self.buf[:ra])
 +        ret = bytes(self.buf[:ra])
          self.buf = self.buf[ra:]
          return ret
  
      def readline(self, size=-1):
          off = 0
          while True:
 -            p = self.buf.find('\n', off)
 +            p = self.buf.find(b'\n', off)
              if p >= 0:
 -                ret = str(self.buf[:p + 1])
 +                ret = bytes(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 = bytes(self.buf[:size])
                  self.buf = self.buf[size:]
                  return ret
              if self.rb == self.limit:
 -                ret = str(self.buf)
 +                ret = bytes(self.buf)
                  self.buf = bytearray()
                  return ret
              ra = self.limit - self.rb
@@@ -97,7 -97,7 +97,7 @@@
                  ra = min(ra, size)
              ra = min(ra, 1024)
              ret = self.bk.read(ra)
 -            if ret == "":
 +            if ret == b"":
                  raise IOError("Unpexpected EOF")
              self.buf.extend(ret)
              self.rb += len(ret)
          class lineiter(object):
              def __iter__(self):
                  return self
 -            def next(self):
 +            def __next__(self):
                  ret = rd.readline()
 -                if ret == "":
 +                if ret == b"":
                      raise StopIteration()
                  return ret
          return lineiter()
@@@ -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 = io.BytesIO(b"")
+             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 = io.BytesIO(b"")
+             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_":