about summary refs log tree commit homepage
path: root/lib/rainbows/revactor.rb
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2009-11-28 11:43:45 -0800
committerEric Wong <normalperson@yhbt.net>2009-11-28 12:19:21 -0800
commitf824f4e13a13daf56439e16ecb3a62469a8c9bf0 (patch)
tree162c80491bdf7ad7d258479af092c23a5557c2be /lib/rainbows/revactor.rb
parent2489368a624cff50a330238cf3c3f16eb0bd743c (diff)
downloadrainbows-f824f4e13a13daf56439e16ecb3a62469a8c9bf0.tar.gz
Some people fork processes, so it avoid hanging a connection
open because of that...
Diffstat (limited to 'lib/rainbows/revactor.rb')
-rw-r--r--lib/rainbows/revactor.rb2
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/rainbows/revactor.rb b/lib/rainbows/revactor.rb
index 4e4b381..9a18157 100644
--- a/lib/rainbows/revactor.rb
+++ b/lib/rainbows/revactor.rb
@@ -30,6 +30,8 @@ module Rainbows
     # once a client is accepted, it is processed in its entirety here
     # in 3 easy steps: read request, call app, write app response
     def process_client(client)
+      defined?(Fcntl::FD_CLOEXEC) and
+        client.instance_eval { @_io.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC) }
       rd_args = [ nil ]
       remote_addr = if ::Revactor::TCP::Socket === client
         rd_args << RD_ARGS