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 Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com