Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more

In Files

  • drb/ssl.rb

DRb::DRbSSLSocket

Public Class Methods

new(uri, soc, config, is_established) click to toggle source
 
               # File drb/ssl.rb, line 158
def initialize(uri, soc, config, is_established)
  @ssl = is_established ? soc : nil
  super(uri, soc.to_io, config)
end
            
open(uri, config) click to toggle source
 
               # File drb/ssl.rb, line 124
def self.open(uri, config)
  host, port, = parse_uri(uri)
  host.untaint
  port.untaint
  soc = TCPSocket.open(host, port)
  ssl_conf = SSLConfig::new(config)
  ssl_conf.setup_ssl_context
  ssl = ssl_conf.connect(soc)
  self.new(uri, ssl, ssl_conf, true)
end
            
open_server(uri, config) click to toggle source
 
               # File drb/ssl.rb, line 135
def self.open_server(uri, config)
  uri = 'drbssl://:0' unless uri
  host, port, = parse_uri(uri)
  if host.size == 0
    host = getservername
    soc = open_server_inaddr_any(host, port)
  else
    soc = TCPServer.open(host, port)
  end
  port = soc.addr[1] if port == 0
  @uri = "drbssl://#{host}:#{port}"

  ssl_conf = SSLConfig.new(config)
  ssl_conf.setup_certificate
  ssl_conf.setup_ssl_context
  self.new(@uri, soc, ssl_conf, false)
end
            
parse_uri(uri) click to toggle source
 
               # File drb/ssl.rb, line 112
def self.parse_uri(uri)
  if uri =~ /^drbssl:\/\/(.*?):(\d+)(\?(.*))?$/
    host = $1
    port = $2.to_i
    option = $4
    [host, port, option]
  else
    raise(DRbBadScheme, uri) unless uri =~ /^drbssl:/
    raise(DRbBadURI, 'can\t parse uri:' + uri)
  end
end
            
uri_option(uri, config) click to toggle source
 
               # File drb/ssl.rb, line 153
def self.uri_option(uri, config)
  host, port, option = parse_uri(uri)
  return "drbssl://#{host}:#{port}", option
end
            

Public Instance Methods

accept() click to toggle source
 
               # File drb/ssl.rb, line 173
def accept
  begin
  while true
    soc = @socket.accept
    break if (@acl ? @acl.allow_socket?(soc) : true)
    soc.close
  end
  begin
    ssl = @config.accept(soc)
  rescue Exception
    soc.close
    raise
  end
  self.class.new(uri, ssl, @config, true)
  rescue OpenSSL::SSL::SSLError
    warn("#{__FILE__}:#{__LINE__}: warning: #{$!.message} (#{$!.class})") if @config[:verbose]
    retry
  end
end
            
close() click to toggle source
 
               # File drb/ssl.rb, line 165
def close
  if @ssl
    @ssl.close
    @ssl = nil
  end
  super
end
            
stream() click to toggle source
 
               # File drb/ssl.rb, line 163
def stream; @ssl; end
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.