From cdf40b62af41540e4c57a2edfa62ea902d5d63d5 Mon Sep 17 00:00:00 2001 From: Helmut Grohne Date: Fri, 28 Mar 2008 18:00:57 +0100 Subject: implement size parameter for environ["wsgi.input"].readline on scgi.forkpool --- wsgitools/scgi/forkpool.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'wsgitools/scgi/forkpool.py') diff --git a/wsgitools/scgi/forkpool.py b/wsgitools/scgi/forkpool.py index 3106d05..df92ec3 100644 --- a/wsgitools/scgi/forkpool.py +++ b/wsgitools/scgi/forkpool.py @@ -56,19 +56,29 @@ class SocketFileWrapper: raise return self.buff + data - def readline(self): + def readline(self, size=None): """see pep333""" while True: try: split = self.buff.index('\n') + 1 + if size is not None and split > size: + split = size ret, self.buff = self.buff[:split], self.buff[split:] return ret except ValueError: - data = self._recv(4096) + if size is not None: + if len(self.buff) < size: + data = self._recv(size - len(self.buff)) + else: + ret, self.buff = self.buff[:size], self.buff[size:] + return ret + else: + data = self._recv(4096) if not data: ret, self.buff = self.buff, "" return ret self.buff += data + def readlines(self): """see pep333""" data = self.readline() -- cgit v1.2.3