Class: OpenSSL::SSL::SSLServer (Ruby 2.3.4)

In Files

  • openssl/lib/openssl/ssl.rb

Parent

Class/Module Index [+]

Quicksearch

OpenSSL::SSL::SSLServer

SSLServer represents a TCP/IP server socket with Secure Sockets Layer.

Attributes

start_immediately[RW]

When true then accept works exactly the same as TCPServer#accept

Public Class Methods

new(svr, ctx)

Creates a new instance of SSLServer.

 
               # File openssl/lib/openssl/ssl.rb, line 368
def initialize(svr, ctx)
  @svr = svr
  @ctx = ctx
  unless ctx.session_id_context
    # see #6137 - session id may not exceed 32 bytes
    prng = ::Random.new($0.hash)
    session_id = prng.bytes(16).unpack('H*')[0]
    @ctx.session_id_context = session_id
  end
  @start_immediately = true
end
            

Public Instance Methods

accept()

Works similar to TCPServer#accept.

 
               # File openssl/lib/openssl/ssl.rb, line 396
def accept
  # Socket#accept returns [socket, addrinfo].
  # TCPServer#accept returns a socket.
  # The following comma strips addrinfo.
  sock, = @svr.accept
  begin
    ssl = OpenSSL::SSL::SSLSocket.new(sock, @ctx)
    ssl.sync_close = true
    ssl.accept if @start_immediately
    ssl
  rescue Exception => ex
    if ssl
      ssl.close
    else
      sock.close
    end
    raise ex
  end
end
            
close()

See IO#close for details.

 
               # File openssl/lib/openssl/ssl.rb, line 417
def close
  @svr.close
end
            
listen(backlog=5)

See TCPServer#listen for details.

 
               # File openssl/lib/openssl/ssl.rb, line 386
def listen(backlog=5)
  @svr.listen(backlog)
end
            
shutdown(how=Socket::SHUT_RDWR)

See BasicSocket#shutdown for details.

 
               # File openssl/lib/openssl/ssl.rb, line 391
def shutdown(how=Socket::SHUT_RDWR)
  @svr.shutdown(how)
end
            
to_io()

Returns the TCPServer passed to the SSLServer when initialized.

 
               # File openssl/lib/openssl/ssl.rb, line 381
def to_io
  @svr
end