about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2011-05-17 17:38:12 -0700
committerEric Wong <normalperson@yhbt.net>2011-05-17 17:41:42 -0700
commit5e4f790847198e1267b2fbd5decfa09e5cc3d618 (patch)
treea800bc5cb56961c6c3030c41053256e7bc895075
parentbc4f5510cd0e5ccf85f077cca019bca70309bf01 (diff)
downloadrainbows-5e4f790847198e1267b2fbd5decfa09e5cc3d618.tar.gz
io_splice 4.1.1 works around issues with socket
buffers filling up pipe buffers on blocking splice.

See http://lkml.org/lkml/2009/1/13/478 for a better
explanation.
-rw-r--r--lib/rainbows/configurator.rb4
-rw-r--r--t/test_isolate.rb2
2 files changed, 4 insertions, 2 deletions
diff --git a/lib/rainbows/configurator.rb b/lib/rainbows/configurator.rb
index a1d90cb..1b93fc7 100644
--- a/lib/rainbows/configurator.rb
+++ b/lib/rainbows/configurator.rb
@@ -190,7 +190,9 @@ module Rainbows::Configurator
   #   end
   #
   # Keep in mind that splice(2) itself is a relatively new system call
-  # and has been buggy in many older Linux kernels.
+  # and has been buggy in many older Linux kernels.  If you're proxying
+  # the output of sockets to the client, be sure to use "io_splice"
+  # 4.1.1 or later to avoid stalling responses.
   #
   # Default: IO on Ruby 1.9+, false otherwise
   def copy_stream(klass)
diff --git a/t/test_isolate.rb b/t/test_isolate.rb
index fe2aebc..562f1b6 100644
--- a/t/test_isolate.rb
+++ b/t/test_isolate.rb
@@ -41,7 +41,7 @@ Isolate.now!(opts) do
     gem 'sleepy_penguin', '2.0.0'
 
     # is 2.6.32 new enough?
-    gem 'io_splice', '4.1.0' if `uname -r`.strip > '2.6.32'
+    gem 'io_splice', '4.1.1' if `uname -r`.strip > '2.6.32'
   end
 end