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

Works similar to `TCPServer#accept`.

    # File ext/openssl/lib/openssl/ssl.rb, line 516
    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 ext/openssl/lib/openssl/ssl.rb, line 537
    def close
      @svr.close
    end

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

See `TCPServer#listen` for details.

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

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

See `BasicSocket#shutdown` for details.

    # File ext/openssl/lib/openssl/ssl.rb, line 511
    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 ext/openssl/lib/openssl/ssl.rb, line 501
    def to_io
      @svr
    end