SSLServer represents a TCP/IP server socket with Secure Sockets Layer.
Methods
Included Modules
Attributes
| [RW] | start_immediately | When true then accept works exactly the same as TCPServer#accept |
Class Public methods
new(svr, ctx)
Link
Creates a new instance of SSLServer.
-
srvis an instance of TCPServer. -
ctxis an instance of OpenSSL::SSL::SSLContext.
# File ext/openssl/lib/openssl/ssl.rb, line 365 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
Instance Public methods
accept()
Link
Works similar to TCPServer#accept.
# File ext/openssl/lib/openssl/ssl.rb, line 393 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
listen(backlog=5)
Link
See TCPServer#listen for details.
shutdown(how=Socket::SHUT_RDWR)
Link
See BasicSocket#shutdown for details.