Class: OpenSSL::SSL::SSLServer
- Includes:
- SocketForwarder
- Defined in:
- ext/openssl/lib/openssl/ssl.rb
Overview
SSLServer represents a TCP/IP server socket with Secure Sockets Layer.
Instance Attribute Summary collapse
-
#start_immediately ⇒ Object
When true then #accept works exactly the same as TCPServer#accept.
Instance Method Summary collapse
-
#accept ⇒ Object
Works similar to TCPServer#accept.
-
#close ⇒ Object
See IO#close for details.
-
#initialize(svr, ctx) ⇒ SSLServer
constructor
Creates a new instance of SSLServer.
-
#listen(backlog = Socket::SOMAXCONN) ⇒ Object
See TCPServer#listen for details.
-
#shutdown(how = Socket::SHUT_RDWR) ⇒ Object
See BasicSocket#shutdown for details.
-
#to_io ⇒ Object
Returns the TCPServer passed to the SSLServer when initialized.
Methods included from SocketForwarder
#addr, #close_on_exec=, #close_on_exec?, #closed?, #do_not_reverse_lookup=, #fcntl, #fileno, #getsockopt, #local_address, #peeraddr, #remote_address, #setsockopt, #timeout, #timeout=, #wait, #wait_readable, #wait_writable
Constructor Details
#initialize(svr, ctx) ⇒ SSLServer
Creates a new instance of SSLServer.
-
srv is an instance of TCPServer.
-
ctx is an instance of OpenSSL::SSL::SSLContext.
529 530 531 532 533 534 535 536 537 538 539 |
# File 'ext/openssl/lib/openssl/ssl.rb', line 529 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 |
Instance Attribute Details
#start_immediately ⇒ Object
When true then #accept works exactly the same as TCPServer#accept
524 525 526 |
# File 'ext/openssl/lib/openssl/ssl.rb', line 524 def start_immediately @start_immediately end |
Instance Method Details
#accept ⇒ Object
Works similar to TCPServer#accept.
557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 |
# File 'ext/openssl/lib/openssl/ssl.rb', line 557 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 ⇒ Object
See IO#close for details.
578 579 580 |
# File 'ext/openssl/lib/openssl/ssl.rb', line 578 def close @svr.close end |
#listen(backlog = Socket::SOMAXCONN) ⇒ Object
See TCPServer#listen for details.
547 548 549 |
# File 'ext/openssl/lib/openssl/ssl.rb', line 547 def listen(backlog=Socket::SOMAXCONN) @svr.listen(backlog) end |
#shutdown(how = Socket::SHUT_RDWR) ⇒ Object
See BasicSocket#shutdown for details.
552 553 554 |
# File 'ext/openssl/lib/openssl/ssl.rb', line 552 def shutdown(how=Socket::SHUT_RDWR) @svr.shutdown(how) end |
#to_io ⇒ Object
Returns the TCPServer passed to the SSLServer when initialized.
542 543 544 |
# File 'ext/openssl/lib/openssl/ssl.rb', line 542 def to_io @svr end |