1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Added collusion handling for FCGI

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@134 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
David Heinemeier Hansson 2004-12-12 18:51:26 +00:00
parent fdc4d1bd79
commit 54dabd05e6
2 changed files with 20 additions and 14 deletions

View file

@ -9,4 +9,4 @@ require 'irb/completion'
# tunnel when you want to connect from a different
# computer over the internet. See the documentation of
# Breakpoint.activate_drb for how to do that.
Breakpoint.activate_drb('druby://localhost:42531', nil) if $0.include?("dispatch")
Breakpoint.activate_drb('druby://localhost:42531', nil, !defined?(FastCGI)) if $0.include?("dispatch")

View file

@ -359,11 +359,13 @@ module Breakpoint
#
# Detailed information about running DRb through firewalls is
# available at http://www.rubygarden.org/ruby?DrbTutorial
def activate_drb(uri = 'druby://localhost:42531',
allowed_hosts = ['localhost', '127.0.0.1', '::1'])
def activate_drb(uri = nil, allowed_hosts = ['localhost', '127.0.0.1', '::1'],
ignore_collisions = false)
return false if @use_drb
uri ||= 'druby://localhost:42531'
if allowed_hosts then
acl = ["deny", "all"]
@ -380,17 +382,21 @@ module Breakpoint
begin
DRb.start_service(uri, @drb_service)
rescue Errno::EADDRINUSE
# The port is already occupied by another
# Breakpoint service. We will try to tell
# the old service that we want its port.
# It will then forward that request to the
# user and retry.
unless did_collision then
DRbObject.new(nil, uri).collision
did_collision = true
if ignore_collisions then
nil
else
# The port is already occupied by another
# Breakpoint service. We will try to tell
# the old service that we want its port.
# It will then forward that request to the
# user and retry.
unless did_collision then
DRbObject.new(nil, uri).collision
did_collision = true
end
sleep(10)
retry
end
sleep(10)
retry
end
return true