fix readline in tee

This commit is contained in:
benoitc 2010-02-25 13:04:41 +01:00
parent ac74d5079d
commit cf7322ca43

View File

@ -34,8 +34,8 @@ class TeeInput(object):
chunk, self.buf = parser.filter_body(buf) chunk, self.buf = parser.filter_body(buf)
if chunk: if chunk:
self.tmp.write(chunk) self.tmp.write(chunk)
self.tmp.seek(0)
self._finalize() self._finalize()
self.tmp.seek(0)
@property @property
def len(self): def len(self):
@ -93,12 +93,18 @@ class TeeInput(object):
# now we can get line # now we can get line
line = self.tmp.readline() line = self.tmp.readline()
if size > 0 and len(line) < size: i = line.find("\n")
self.tmp.seek(orig_size) if i == -1:
while True: while True:
orig_size = self.tmp.tell()
if not self._tee(CHUNK_SIZE): if not self._tee(CHUNK_SIZE):
self.tmp.seek(orig_size) break
return self.temp.readline(size) self.tmp.seek(orig_size)
line = self.tmp.readline()
i = line.find("\n")
if i != -1:
break
return line return line
def readlines(self, sizehint=0): def readlines(self, sizehint=0):
@ -132,7 +138,8 @@ class TeeInput(object):
self.tmp.seek(0, os.SEEK_END) self.tmp.seek(0, os.SEEK_END)
return chunk return chunk
if self.parser.body_eof(): break if self.parser.body_eof():
break
data = read_partial(self.socket, length) data = read_partial(self.socket, length)
self.buf += data self.buf += data