1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/ext/socket
normal c32fc82d0e 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
2017-04-19 01:08:16 +00:00
..
lib socket: avoid fcntl for read/write_nonblock on Linux 2017-04-19 01:08:16 +00:00
.document
addrinfo.h
ancdata.c
basicsocket.c basicsocket.c: proper system call name 2017-04-08 03:25:50 +00:00
constants.c
depend ruby tool/update-deps --fix 2017-03-22 06:00:18 +00:00
extconf.rb ext/socket/extconf.rb: fix a typo 2017-02-27 05:58:31 +00:00
getaddrinfo.c
getnameinfo.c
ifaddr.c
init.c
ipsocket.c IPSocket#inspect 2017-04-14 10:03:43 +00:00
mkconstants.rb
option.c
raddrinfo.c ext/socket/raddrinfo.c (addrinfo_mark): avoid needless branch 2017-03-09 03:49:47 +00:00
rubysocket.h
socket.c
sockport.h
sockssocket.c
tcpserver.c
tcpsocket.c
udpsocket.c
unixserver.c
unixsocket.c