From 60f289bf2639cb5df895f8aec58af5ab1e2ea319 Mon Sep 17 00:00:00 2001 From: seki Date: Sun, 2 Jan 2005 06:46:37 +0000 Subject: add lazy stop_service git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7706 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/drb/drb.rb | 15 ++++++++++----- lib/drb/extserv.rb | 5 +---- 2 files changed, 11 insertions(+), 9 deletions(-) (limited to 'lib/drb') diff --git a/lib/drb/drb.rb b/lib/drb/drb.rb index 210e16da24..78cf482c86 100644 --- a/lib/drb/drb.rb +++ b/lib/drb/drb.rb @@ -1333,7 +1333,11 @@ module DRb # Stop this server. def stop_service - @thread.kill + if Thread.current['DRb'] && Thread.current['DRb']['server'] == self + Thread.current['DRb']['stop_service'] = true + else + @thread.kill + end end # Convert a dRuby reference to the local object it refers to. @@ -1518,10 +1522,11 @@ module DRb end client.send_reply(succ, result) rescue nil ensure - unless succ - client.close - break - end + client.close unless succ + if Thread.current['DRb']['stop_service'] + Thread.new { stop_service } + end + break unless succ end end end diff --git a/lib/drb/extserv.rb b/lib/drb/extserv.rb index 4ed2913051..7da8130c2b 100644 --- a/lib/drb/extserv.rb +++ b/lib/drb/extserv.rb @@ -25,10 +25,7 @@ module DRb @invoker.unregist(@name) server = @server @server = nil - Thread.new do - sleep 1 - server.stop_service - end + server.stop_service true end -- cgit v1.2.3