Skip to content
  • Eric Wong's avatar
    ba5eb645
    socket: fix BasicSocket#*_nonblock buffering bugs from r58400 · ba5eb645
    Eric Wong authored
    IO#read_nonblock and IO#write_nonblock take into account
    buffered data, so the Linux-only BasicSocket#read_nonblock
    and BasicSocket#write_nonblock methods must, too.
    
    This bug was only introduced in r58400
    ("socket: avoid fcntl for read/write_nonblock on Linux")
    and does not affect any stable release.
    
    * ext/socket/basicsocket.c (rsock_init_basicsocket):
    * ext/socket/init.c (rsock_s_recvfrom_nonblock):
    * ext/socket/init.c (rsock_init_socket_init):
    * ext/socket/lib/socket.rb (def read_nonblock):
    * ext/socket/lib/socket.rb (def write_nonblock):
    * ext/socket/rubysocket.h (static inline void rsock_maybe_wait_fd):
    * test/socket/test_basicsocket.rb (def test_read_write_nonblock):
      [Feature #13362]
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    ba5eb645
    socket: fix BasicSocket#*_nonblock buffering bugs from r58400
    Eric Wong authored
    IO#read_nonblock and IO#write_nonblock take into account
    buffered data, so the Linux-only BasicSocket#read_nonblock
    and BasicSocket#write_nonblock methods must, too.
    
    This bug was only introduced in r58400
    ("socket: avoid fcntl for read/write_nonblock on Linux")
    and does not affect any stable release.
    
    * ext/socket/basicsocket.c (rsock_init_basicsocket):
    * ext/socket/init.c (rsock_s_recvfrom_nonblock):
    * ext/socket/init.c (rsock_init_socket_init):
    * ext/socket/lib/socket.rb (def read_nonblock):
    * ext/socket/lib/socket.rb (def write_nonblock):
    * ext/socket/rubysocket.h (static inline void rsock_maybe_wait_fd):
    * test/socket/test_basicsocket.rb (def test_read_write_nonblock):
      [Feature #13362]
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Loading