Object
SSLServer represents a TCP/IP server socket with Secure Sockets Layer.
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 270
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
Works similar to TCPServer#accept.
# File openssl/lib/openssl/ssl.rb, line 298
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
See IO#close for details.
# File openssl/lib/openssl/ssl.rb, line 319
def close
@svr.close
end
See TCPServer#listen for details.
# File openssl/lib/openssl/ssl.rb, line 288
def listen(backlog=5)
@svr.listen(backlog)
end
See BasicSocket#shutdown for details.
# File openssl/lib/openssl/ssl.rb, line 293
def shutdown(how=Socket::SHUT_RDWR)
@svr.shutdown(how)
end
Returns the TCPServer passed to the SSLServer when initialized.
# File openssl/lib/openssl/ssl.rb, line 283
def to_io
@svr
end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.