On Mon, Apr 14, 2008 at 9:12 AM, Ralf Schmitt <[EMAIL PROTECTED]> wrote:
>
> I've tracked it down to this change:
> http://hgpy.de/py/release25-maint/rev/e9446c6ab3cd
> this is svn revision 61009.
> [...]
> self._rbufsize if 1, and so the code reads one byte at a time
The change is correct, but exposes a flaw earlier in the same method.
"_rbufsize == 1" represents a request to buffer "by line", which is
clearly irrelevant in this context. A request to read n bytes should
just use the default buffer size if buffering "by line". Sample patch
is attached.
--
Curt Hagenlocher
[EMAIL PROTECTED]
***
---
***************
*** 277,294 ****
def read(self, size=-1):
data = self._rbuf
if size < 0:
# Read until EOF
buffers = []
if data:
buffers.append(data)
self._rbuf = ""
- if self._rbufsize <= 1:
- recv_size = self.default_bufsize
- else:
- recv_size = self._rbufsize
while True:
! data = self._sock.recv(recv_size)
if not data:
break
buffers.append(data)
--- 277,294 ----
def read(self, size=-1):
data = self._rbuf
+ if self._rbufsize <= 1:
+ rbufsize = self.default_bufsize
+ else:
+ rbufsize = self._rbufsize
if size < 0:
# Read until EOF
buffers = []
if data:
buffers.append(data)
self._rbuf = ""
while True:
! data = self._sock.recv(rbufsize)
if not data:
break
buffers.append(data)
***************
*** 305,311 ****
self._rbuf = ""
while True:
left = size - buf_len
! recv_size = max(self._rbufsize, left)
data = self._sock.recv(recv_size)
if not data:
break
--- 305,311 ----
self._rbuf = ""
while True:
left = size - buf_len
! recv_size = max(rbufsize, left)
data = self._sock.recv(recv_size)
if not data:
break
_______________________________________________
Python-Dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com