From f935315563751c7afcb2f773372645efa0c9d63d Mon Sep 17 00:00:00 2001 From: normalperson Date: Wed, 20 Aug 2008 08:20:53 +0000 Subject: set close-on-exec flag on listen socket Original patch from Jos Backus, modified to work on weird platforms where Fcntl::FD_CLOEXEC may not be defined. Jos Backus wrote: > Mongrel, at least in 1.1.4, doesn't set the close-on-exec flag > on the listen socket. This leads to trouble in programs that > use Mongrel and fork other programs (like puppetmasterd, part > of Puppet). For an example, see > http://groups.google.com/group/puppet-dev/browse_thread/thread/463f0f8cfc80cc43 git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@1036 19e92222-5c0b-0410-8929-a290d50e31e9 --- lib/mongrel.rb | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lib/mongrel.rb') diff --git a/lib/mongrel.rb b/lib/mongrel.rb index 1963322..8d815cc 100644 --- a/lib/mongrel.rb +++ b/lib/mongrel.rb @@ -91,6 +91,9 @@ module Mongrel tries = 0 @socket = TCPServer.new(host, port) + if defined?(Fcntl::FD_CLOEXEC) + @socket.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC) + end @classifier = URIClassifier.new @host = host -- cgit v1.2.3-24-ge0c7