From dbf0c0620252d3a0d6d0c0e38cafe41ad24b959f Mon Sep 17 00:00:00 2001 From: normal Date: Wed, 19 Apr 2017 01:08:16 +0000 Subject: socket: avoid fcntl for read/write_nonblock on Linux On platforms where MSG_DONTWAIT works reliably on all sockets (so far, I know of Linux), we can avoid fcntl syscalls and implement IO#write_nonblock and IO#read_nonblock in terms of the socket-specific send and recv family of syscalls. This avoids side effects on the socket, and also encourages generic code to be written in cases where IO wrappers like OpenSSL::SSL::SSLSocket are used. Perhaps in the future, side-effect-free non-blocking I/O can be standard on all files and OSes: https://cr.yp.to/unix/nonblock.html * ext/socket/lib/socket.rb (read_nonblock, write_nonblock): Linux-specific wrapper without side effects [ruby-core:80780] [Feature #13362] * test/socket/test_basicsocket.rb (test_read_write_nonblock): new test git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58400 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- NEWS | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'NEWS') diff --git a/NEWS b/NEWS index ad76ac77cf..2325da2913 100644 --- a/NEWS +++ b/NEWS @@ -64,6 +64,10 @@ with all sufficient information, see the ChangeLog file or Redmine * Random.raw_seed renamed to become Random.urandom. It is now applicable to non-seeding purposes due to [Bug #9569]. +* BasicSocket#read_nonblock and BasicSocket#write_nonblock no + longer sets the O_NONBLOCK file description flag as side effect + [Feature #13362] + === Stdlib compatibility issues (excluding feature bug fixes) === C API updates -- cgit v1.2.3