diff options
Diffstat (limited to 'lib/yahns/wbuf_common.rb')
-rw-r--r-- | lib/yahns/wbuf_common.rb | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/yahns/wbuf_common.rb b/lib/yahns/wbuf_common.rb index b3a4502..01e20bb 100644 --- a/lib/yahns/wbuf_common.rb +++ b/lib/yahns/wbuf_common.rb @@ -1,7 +1,12 @@ # -*- encoding: binary -*- # Copyright (C) 2009-2013, Eric Wong <normalperson@yhbt.net> et. al. # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt) -require 'sendfile' +if ENV["SENDFILE_BROKEN"] + require_relative 'sendfile_compat' +else + require 'sendfile' +end + module Yahns::WbufCommon # :nodoc: # returns nil on success, :wait_*able when blocked # currently, we rely on each thread having exclusive access to the @@ -25,7 +30,8 @@ module Yahns::WbufCommon # :nodoc: raise "BUG: rv=#{rv.inspect} " \ "on tmpio=#{@tmpio.inspect} " \ "sf_offset=#@sf_offset sf_count=#@sf_count" - end while true + end while @sf_count > 0 + wbuf_close(client) end def wbuf_close_common(client) |