diff options
author | Eric Wong <e@80x24.org> | 2015-10-13 23:45:59 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2015-10-14 20:39:32 +0000 |
commit | 98819daf5c638fec4d20bb3960e0d3188e772ab8 (patch) | |
tree | 74beabd854c6048a6fc1e5843155794c1e6ee6e1 | |
parent | 192c9507708741237ca2906ab499bbf89ea8be8f (diff) | |
download | rainbows-98819daf5c638fec4d20bb3960e0d3188e772ab8.tar.gz |
This will allow us use the sendfile syscall under Linux on Ruby which favor #read/#readpartial methods for non-IO objects. This also allows us to revert changes made in commit db790ff3531acdfa23ab290998bba29360a6782b ("sync_close: This fix breakage from Ruby-trunk r50118")
-rw-r--r-- | lib/rainbows/response.rb | 5 | ||||
-rw-r--r-- | lib/rainbows/sync_close.rb | 8 |
2 files changed, 5 insertions, 8 deletions
diff --git a/lib/rainbows/response.rb b/lib/rainbows/response.rb index 8d0de1d..b7b6aa8 100644 --- a/lib/rainbows/response.rb +++ b/lib/rainbows/response.rb @@ -128,6 +128,11 @@ module Rainbows::Response unless IO.method_defined?(:trysendfile) module CopyStream def write_body_file(body, range) + # ensure sendfile gets used for SyncClose objects: + if !body.kind_of?(IO) && body.respond_to?(:to_path) + body = body.to_path + end + range ? COPY_STREAM.copy_stream(body, self, range[1], range[0]) : COPY_STREAM.copy_stream(body, self) end diff --git a/lib/rainbows/sync_close.rb b/lib/rainbows/sync_close.rb index 8738cae..999f003 100644 --- a/lib/rainbows/sync_close.rb +++ b/lib/rainbows/sync_close.rb @@ -16,14 +16,6 @@ class Rainbows::SyncClose @body.respond_to?(m) end - def readpartial(*args) - @body.readpartial(*args) - end - - def read(*args) - @body.read(*args) - end - def to_path @body.to_path end |