Author: Alex Gaynor <alex.gay...@gmail.com> Branch: Changeset: r66443:d330a3a3c59b Date: 2013-08-29 19:10 -0700 http://bitbucket.org/pypy/pypy/changeset/d330a3a3c59b/
Log: If setblocking(False) is set twice on a socket, do fewer syscalls. diff --git a/rpython/rlib/rsocket.py b/rpython/rlib/rsocket.py --- a/rpython/rlib/rsocket.py +++ b/rpython/rlib/rsocket.py @@ -509,12 +509,13 @@ if hasattr(_c, 'fcntl'): def _setblocking(self, block): - delay_flag = intmask(_c.fcntl(self.fd, _c.F_GETFL, 0)) + orig_delay_flag = intmask(_c.fcntl(self.fd, _c.F_GETFL, 0)) if block: - delay_flag &= ~_c.O_NONBLOCK + delay_flag = orig_delay_flag & ~_c.O_NONBLOCK else: - delay_flag |= _c.O_NONBLOCK - _c.fcntl(self.fd, _c.F_SETFL, delay_flag) + delay_flag = orig_delay_flag | _c.O_NONBLOCK + if orig_delay_flag != delay_flag: + _c.fcntl(self.fd, _c.F_SETFL, delay_flag) elif hasattr(_c, 'ioctlsocket'): def _setblocking(self, block): flag = lltype.malloc(rffi.ULONGP.TO, 1, flavor='raw') _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit