diff options
Diffstat (limited to 'lib/drb/drb.rb')
-rw-r--r-- | lib/drb/drb.rb | 62 |
1 files changed, 10 insertions, 52 deletions
diff --git a/lib/drb/drb.rb b/lib/drb/drb.rb index 5c7f66ac16..0063e20144 100644 --- a/lib/drb/drb.rb +++ b/lib/drb/drb.rb @@ -160,8 +160,6 @@ require_relative 'eq' # # The object that handles requests on the server # FRONT_OBJECT=TimeServer.new # -# $SAFE = 1 # disable eval() and friends -# # DRb.start_service(URI, FRONT_OBJECT) # # Wait for the drb server thread to finish before exiting. # DRb.thread.join @@ -245,8 +243,6 @@ require_relative 'eq' # # FRONT_OBJECT=LoggerFactory.new("/tmp/dlog") # -# $SAFE = 1 # disable eval() and friends -# # DRb.start_service(URI, FRONT_OBJECT) # DRb.thread.join # @@ -286,10 +282,7 @@ require_relative 'eq' # ro.instance_eval("`rm -rf *`") # # The dangers posed by instance_eval and friends are such that a -# DRbServer should generally be run with $SAFE set to at least -# level 1. This will disable eval() and related calls on strings -# passed across the wire. The sample usage code given above follows -# this practice. +# DRbServer should only be used when clients are trusted. # # A DRbServer can be configured with an access control list to # selectively allow or deny access from specified IP addresses. The @@ -1362,7 +1355,6 @@ module DRb @@argc_limit = 256 @@load_limit = 0xffffffff @@verbose = false - @@safe_level = 0 # Set the default value for the :argc_limit option. # @@ -1392,11 +1384,8 @@ module DRb @@idconv = idconv end - # Set the default safe level to +level+. The default safe level is 0 - # - # See #new for more information. - def self.default_safe_level(level) - @@safe_level = level + def self.default_safe_level(level) # :nodoc: + # Remove in Ruby 3.0 end # Set the default value of the :verbose option. @@ -1418,7 +1407,6 @@ module DRb :tcp_acl => @@acl, :load_limit => @@load_limit, :argc_limit => @@argc_limit, - :safe_level => @@safe_level } default_config.update(hash) end @@ -1452,10 +1440,6 @@ module DRb # :argc_limit :: the maximum number of arguments to a remote # method accepted by the server. Defaults to # 256. - # :safe_level :: The safe level of the DRbServer. The attribute - # sets $SAFE for methods performed in the main_loop. - # Defaults to 0. - # # The default values of these options can be modified on # a class-wide basis by the class methods #default_argc_limit, # #default_load_limit, #default_acl, #default_id_conv, @@ -1487,7 +1471,6 @@ module DRb @front = front @idconv = @config[:idconv] - @safe_level = @config[:safe_level] @grp = ThreadGroup.new @thread = run @@ -1514,11 +1497,10 @@ module DRb # The configuration of this DRbServer attr_reader :config - # The safe level for this server. This is a number corresponding to - # $SAFE. - # - # The default safe_level is 0 - attr_reader :safe_level + def safe_level # :nodoc: + # Remove in Ruby 3.0 + 0 + end # Set whether to operate in verbose mode. # @@ -1652,7 +1634,6 @@ module DRb class InvokeMethod # :nodoc: def initialize(drb_server, client) @drb_server = drb_server - @safe_level = drb_server.safe_level @client = client end @@ -1661,33 +1642,10 @@ module DRb @succ = false setup_message - if $SAFE < @safe_level - info = Thread.current['DRb'] - if @block - @result = Thread.new do - Thread.current['DRb'] = info - prev_safe_level = $SAFE - $SAFE = @safe_level - perform_with_block - ensure - $SAFE = prev_safe_level - end.value - else - @result = Thread.new do - Thread.current['DRb'] = info - prev_safe_level = $SAFE - $SAFE = @safe_level - perform_without_block - ensure - $SAFE = prev_safe_level - end.value - end + if @block + @result = perform_with_block else - if @block - @result = perform_with_block - else - @result = perform_without_block - end + @result = perform_without_block end @succ = true case @result |