Once you've sent a file descriptor you expect to be able to close it on the sender's side, even if the other side hasn't read the file descriptor yet. Not so: on some operating systems (I'm looking at you OS X) this can cause the receiving side to receive a bad file descriptor. The post negotiation protocol ensures that we block until the other side has really received the file descriptor.
When the ApplicationSpawner server spawns a worker process, do not let it the worker process communicate directly with the process that issued the spawn command to the ApplicationSpawner server. This is because upon receiving the owner pipe, the issuer process will send a message to the ApplicationSpawner server, as part of the new FD negotiation protocol. If the ApplicationSpawner server has gone back into its message multiplexing main loop then it'll crash. Instead, the ApplicationSpawner server will now act as a proxy between the issuer and the worker process.
… default one.
…ixes issue #432.
…nformative. Case in point, before the fix, I was getting this error (Rails 2.3.5): no such file to load -- application.rb (MissingSourceFile) PhusionPassenger::UnknownError After the fix, I now get this: Expected /Users/slippyd/Sites/tradechic.net/app/helpers/admin/sotws_helper.rb to define Admin::SotwsHelper LoadError Fixes issue #439.
…used. Using $request_uri will cause an infinite loop if an internal redirect (X-Accel-Redirect) is subrequested back to Passenger, $uri is the value we are actually interested in. On the nginx wiki: http://wiki.nginx.org/NginxHttpCoreModule#.24request_uri http://wiki.nginx.org/NginxHttpCoreModule#.24uri Fixes issue #433.
…n OS X will malfunction if SIGCHLD doesn't have a correct handler.
…mething that makes stuff like waitpid() malfunction.