# 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)
Source

    # File ext/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

Creates a new instance of `SSLServer`.

- srv is an instance of `TCPServer`.

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

### Public Instance Methods

accept ()
Source

    # File ext/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

Works similar to `TCPServer#accept`.

close ()
Source

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

See `IO#close` for details.

listen (backlog=Socket::SOMAXCONN)
Source

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

See `TCPServer#listen` for details.

shutdown (how=Socket::SHUT_RDWR)
Source

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

See `BasicSocket#shutdown` for details.

to_io ()
Source

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

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