diff options
Diffstat (limited to 'lib/drb/drb.rb')
-rw-r--r-- | lib/drb/drb.rb | 15 |
1 files changed, 10 insertions, 5 deletions
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 |