lib/puma/accept_nonblock.rb (25 lines of code) (raw):
# frozen_string_literal: true
require 'openssl'
module OpenSSL
module SSL
class SSLServer
unless public_method_defined? :accept_nonblock
def accept_nonblock
sock = @svr.accept_nonblock
begin
ssl = OpenSSL::SSL::SSLSocket.new(sock, @ctx)
ssl.sync_close = true
ssl.accept if @start_immediately
ssl
rescue SSLError => ex
if ssl
ssl.close
else
sock.close
end
raise ex
end
end
end
end
end
end