diff options
author | Eric Wong <normalperson@yhbt.net> | 2009-10-04 01:37:29 -0700 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2009-10-04 01:37:29 -0700 |
commit | 552366ca8773c04047fb82ea2468c5c66d9df1d8 (patch) | |
tree | 7368f9c6f6285e4bbdfab66ca46f73cd592a6401 /lib | |
parent | 2760c0ee2c11a5b9125e5a07374f5fdd5a93282e (diff) | |
download | rainbows-552366ca8773c04047fb82ea2468c5c66d9df1d8.tar.gz |
Revactor may be gaining support for UNIX domain socket listeners soon, so factor out revactorize_listeners into its own method that can conditionally handle UNIX domain sockets if our Revactor version supports it. Patch for Revactor submitted here: http://rubyforge.org/pipermail/revactor-talk/2009-October/000035.html
Diffstat (limited to 'lib')
-rw-r--r-- | lib/rainbows/revactor.rb | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/lib/rainbows/revactor.rb b/lib/rainbows/revactor.rb index f602183..66a4ae3 100644 --- a/lib/rainbows/revactor.rb +++ b/lib/rainbows/revactor.rb @@ -18,7 +18,8 @@ module Rainbows buf = client.read or return # this probably does not happen... hp = HttpParser.new env = {} - remote_addr = client.remote_addr + remote_addr = ::Revactor::TCP::Socket === client ? + client.remote_addr : LOCALHOST begin while ! hp.headers(env, buf) @@ -69,10 +70,7 @@ module Rainbows Actor.current.trap_exit = true - listeners = LISTENERS.map do |s| - TCPServer === s ? ::Revactor::TCP.listen(s, nil) : nil - end.compact - + listeners = revactorize_listeners logger.info "worker=#{worker.nr} ready with Revactor" clients = [] @@ -113,5 +111,18 @@ module Rainbows client.close rescue nil end + def revactorize_listeners + LISTENERS.map do |s| + if TCPServer === s + ::Revactor::TCP.listen(s, nil) + elsif defined?(::Revactor::UNIX) && UNIXServer === s + ::Revactor::UNIX.listen(s) + else + logger.error "your version of Revactor can't handle #{s.inspect}" + nil + end + end.compact + end + end end |