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
# 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
Creates a new instance of SSLServer
.
-
srv is an instance of
TCPServer
. -
ctx is an instance of
OpenSSL::SSL::SSLContext
.
Public Instance Methods
# 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
Works similar to TCPServer#accept
.
# File ext/openssl/lib/openssl/ssl.rb, line 537 def close @svr.close end
See IO#close
for details.
# File ext/openssl/lib/openssl/ssl.rb, line 506 def listen(backlog=Socket::SOMAXCONN) @svr.listen(backlog) end
See TCPServer#listen
for details.
# File ext/openssl/lib/openssl/ssl.rb, line 511 def shutdown(how=Socket::SHUT_RDWR) @svr.shutdown(how) end
See BasicSocket#shutdown
for details.
Ruby Core © 1993–2020 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.