diff options
-rw-r--r-- | lib/dtas/buffer/fiddle_splice.rb | 3 | ||||
-rw-r--r-- | lib/dtas/buffer/splice.rb | 3 | ||||
-rw-r--r-- | test/test_buffer.rb | 2 |
3 files changed, 5 insertions, 3 deletions
diff --git a/lib/dtas/buffer/fiddle_splice.rb b/lib/dtas/buffer/fiddle_splice.rb index ad007eb..d9232cd 100644 --- a/lib/dtas/buffer/fiddle_splice.rb +++ b/lib/dtas/buffer/fiddle_splice.rb @@ -84,7 +84,8 @@ module DTAS::Buffer::FiddleSplice # :nodoc: targets # our one and only target blocked on write else @bytes_xfer += s - :wait_readable # we want to read more from @to_io soon + # s < limit means targets[0] is full + s < limit ? targets : :wait_readable end rescue Errno::EPIPE, IOError => e __dst_error(targets[0], e) diff --git a/lib/dtas/buffer/splice.rb b/lib/dtas/buffer/splice.rb index e5d17ab..b9957ce 100644 --- a/lib/dtas/buffer/splice.rb +++ b/lib/dtas/buffer/splice.rb @@ -39,7 +39,8 @@ module DTAS::Buffer::Splice # :nodoc: targets # our one and only target blocked on write else @bytes_xfer += s - :wait_readable # we want to read more from @to_io soon + # s < limit means targets[0] is full + s < limit ? targets : :wait_readable end rescue Errno::EPIPE, IOError => e __dst_error(targets[0], e) diff --git a/test/test_buffer.rb b/test/test_buffer.rb index 54ee584..b89a090 100644 --- a/test/test_buffer.rb +++ b/test/test_buffer.rb @@ -62,7 +62,7 @@ class TestBuffer < Testcase buf = new_buffer r, w = IO.pipe buf.wr.write "HIHI" - assert_equal :wait_readable, buf.broadcast([w]) + assert_equal [w], buf.broadcast([w]) assert_equal 4, buf.bytes_xfer tmp = [w] r.close |