1
0
Fork 0
mirror of https://github.com/puma/puma.git synced 2022-11-09 13:48:40 -05:00
puma--puma/lib/puma/accept_nonblock.rb
Evan Phoenix ab8dbfeb96 Vastly improve IO perf on 1.9.3
Puma::IOBuffer is a very simple memory buffer that allows for fast
append without additional object overhead.

Additionally, turns out that IO#write on 1.9.3 is extremely
non-performant because it allows a Hash object on every invocation.
Avoid calling IO#write in a loop on 1.9.3! Use IO#syswrite if you can
(for instance when you don't care about the encoding of the output
(sockets)).
2012-08-11 15:09:09 -07:00

23 lines
486 B
Ruby

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
sock.close
raise ex
end
end
end
end
end
end