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 = ""):
+ def get(self, key, default=""):
if key.lower() in self.dict:
return self.dict[key.lower()][1]
return default
i += 1
return str
+class shortinput(IOError, EOFError):
+ def __init__(self):
+ super().__init__("Unexpected EOF")
+
class limitreader(object):
def __init__(self, back, limit):
self.bk = back
ra = min(ra, size)
while len(self.buf) < ra:
ret = self.bk.read(ra - len(self.buf))
- if ret == "":
- raise IOError("Unexpected EOF")
+ if ret == b"":
+ raise shortinput()
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
ra = min(ra, size)
ra = min(ra, 1024)
ret = self.bk.read(ra)
- if ret == "":
- raise IOError("Unpexpected EOF")
+ if ret == b"":
+ raise shortinput()
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()
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"]
self.https = p.https
self.ihead = p.ihead
self.ohead = p.ohead
+ self.input = p.input
def status(self, code, msg):
return self.parent.status(code, msg)