[ruby-cvs:65572] normal:r58400 (trunk): socket: avoid fcntl for read/write_nonblock on Linux

normal at ruby-lang.org normal at ruby-lang.org
Wed Apr 19 10:08:16 JST 2017

normal	2017-04-19 10:08:16 +0900 (Wed, 19 Apr 2017)

  New Revision: 58400


    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

  Modified files:

More information about the ruby-cvs mailing list