Files | Admin

Notes:

Release Name: 4.1.1

Notes:
io_splice 4.1.1 - workaround socket -> pipe issues

The splice family of Linux system calls can transfer data between file
descriptors without the need to copy data into userspace.  Instead of a
userspace buffer, they rely on an ordinary Unix pipe as a kernel-level
buffer.

* http://bogomips.org/ruby_io_splice/
* ruby.io.splice@librelist.com
* git://bogomips.org/ruby_io_splice.git

Changes:

IO::Splice.copy_stream now uses SPLICE_F_NONBLOCK whenever the
destination is a pipe.  Our documentation is also updated to
reflect the issue of splicing from sockets into pipes.

ref: http://lkml.org/lkml/2009/1/13/478



Changes: GIT-VERSION-GEN | 2 +- ext/io_splice/io_splice_ext.c | 14 +++++++++-- lib/io/splice.rb | 26 +++++++++++++-------- test/test_tcp_splice.rb | 49 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 77 insertions(+), 14 deletions(-) commit 45436d6251b3310e3ac02f1590e473a2602762ac Author: Eric Wong Date: Tue May 17 17:15:49 2011 -0700 io_splice 4.1.1 - workaround socket -> pipe issues IO::Splice.copy_stream now uses SPLICE_F_NONBLOCK whenever the destination is a pipe. Our documentation is also updated to reflect the issue of splicing from sockets into pipes. ref: http://lkml.org/lkml/2009/1/13/478 commit 1e4b4af9d8fa01b59b933fe94b405288f668a7fc Author: Eric Wong Date: Tue May 17 17:12:48 2011 -0700 expand doc for non-blocking splice into a pipe We should warn our users to avoid a blocking splice() from a socket into a pipe if the socket buffers are full unless there's a blocking read/splice on the other end of the pipe. commit 86508cdc09ef36d8c5ae708ef9e3e19a82844e98 Author: Eric Wong Date: Mon May 16 20:18:12 2011 -0700 copy_stream: always use SPLICE_F_NONBLOCK for partial copy The pipe may be full from small buffers due to how TCP works, so we need to use non-blocking I/O on the pipe. ref: http://lkml.org/lkml/2009/1/13/478