diff options
Diffstat (limited to 'lib/webrick')
-rw-r--r-- | lib/webrick/utils.rb | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/webrick/utils.rb b/lib/webrick/utils.rb index bde3d01ca5..c6da8449df 100644 --- a/lib/webrick/utils.rb +++ b/lib/webrick/utils.rb @@ -156,15 +156,23 @@ module WEBrick Thread.start{ while true now = Time.now - @timeout_info.keys.each{|thread| - ary = @timeout_info[thread] + wakeup = nil + @timeout_info.each {|thread, ary| next unless ary ary.dup.each{|info| time, exception = *info - interrupt(thread, info.object_id, exception) if time < now + if time < now + interrupt(thread, info.object_id, exception) + elsif !wakeup || time < wakeup + wakeup = time + end } } - sleep 0.5 + if !wakeup + sleep + elsif (wakeup -= now) > 0 + sleep(wakeup) + end end } end |