<div dir="ltr">Hello,<div><br></div><div>Is there a reason why the stdlib socket module _fileobject.flush() method is using ._rbufsize instead of ._wbufsize at line 297 (Python 2.7.3), where it determines the buffer_size value to be used for _sock.sendall()?  Does anybody know the history behind this?<div>

<br></div><div>Based on what I read in the code, there appear to be four code paths possible setting the _rbufsize and _wbufsize when creating an _fileobject:</div><div><br></div><div>1. default, or negative, bufsize argument</div>

<div><br></div><div>    bufsize argument is set to the default_bufsize class attribute</div><div>    _rbufsize = bufsize</div><div>    _wbufsize = bufsize</div><div><br></div><div>2. bufsize = 0</div><div><br></div><div>
    _rbufsize = 1</div><div>    _wbufsize = 0</div>
<div><br></div><div>3. bufsize = 1</div><div><br></div><div>    _rbufsize = default_bufsize class attribute</div><div>    _wbufsize = 1</div><div><br></div><div>4. bufsize > 1</div><div><br></div><div>    _rbufsize = _wbufsize = bufsize</div>
<div><br></div><div>With that, write() and writelines() uses _wbufsize, as expected.</div><div><br></div><div>Additionally, could flush's buffer_size local variable be determined just the same using:</div></div><div><br>
</div><div>    buffer_size = max(self._wbufsize, self.bufsize)</div><div><br></div><div>Thanks for considering.</div><div><br></div><div>-peter</div></div>