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
|