diff --git a/lib/openssl/ssl.rb b/lib/openssl/ssl.rb index 355eb2ebb..44c737f41 100644 --- a/lib/openssl/ssl.rb +++ b/lib/openssl/ssl.rb @@ -231,6 +231,11 @@ def ssl_version=(meth) end module SocketForwarder + # The file descriptor for the socket. + def fileno + to_io.fileno + end + def addr to_io.addr end diff --git a/test/test_ssl.rb b/test/test_ssl.rb index b8016677d..02841ce01 100644 --- a/test/test_ssl.rb +++ b/test/test_ssl.rb @@ -1544,6 +1544,20 @@ def test_freeze_calls_setup } end + def test_fileno + ctx = OpenSSL::SSL::SSLContext.new + sock1, sock2 = socketpair + + socket = OpenSSL::SSL::SSLSocket.new(sock1) + server = OpenSSL::SSL::SSLServer.new(sock2, ctx) + + assert_equal socket.fileno, socket.to_io.fileno + assert_equal server.fileno, server.to_io.fileno + ensure + sock1.close + sock2.close + end + private def start_server_version(version, ctx_proc = nil,