class OpenSSL::SSL::SSLServer - openssl: Ruby Standard Library Documentation

# class 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) click to toggle source

Creates a new instance of `SSLServer`.

- srv is an instance of TCPServer.

- ctx is an instance of `OpenSSL::SSL::SSLContext`.

    # File openssl/lib/openssl/ssl.rb, line 554
    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).unpack1('H*')
        @ctx.session_id_context = session_id
      end
      @start_immediately = true
    end

### Public Instance Methods

accept() click to toggle source

Works similar to TCPServer#accept.

    # File openssl/lib/openssl/ssl.rb, line 582
    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() click to toggle source

See IO#close for details.

    # File openssl/lib/openssl/ssl.rb, line 603
    def close
      @svr.close
    end

listen(backlog=Socket::SOMAXCONN) click to toggle source

See TCPServer#listen for details.

    # File openssl/lib/openssl/ssl.rb, line 572
    def listen(backlog=Socket::SOMAXCONN)
      @svr.listen(backlog)
    end

shutdown(how=Socket::SHUT_RDWR) click to toggle source

See BasicSocket#shutdown for details.

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

to_io() click to toggle source

Returns the TCPServer passed to the `SSLServer` when initialized.

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