lib/reel/ssl_server.rb in reel-0.4.0.pre7 vs lib/reel/ssl_server.rb in reel-0.4.0

- old
+ new

@@ -6,30 +6,32 @@ backlog = options.fetch(:backlog, DEFAULT_BACKLOG) # Ideally we can encapsulate this rather than making Ruby OpenSSL a # mandatory part of the Reel API. It would be nice to support # alternatives (e.g. Puma's MiniSSL) - ssl_context = OpenSSL::SSL::SSLContext.new + ssl_context = OpenSSL::SSL::SSLContext.new ssl_context.cert = OpenSSL::X509::Certificate.new options.fetch(:cert) ssl_context.key = OpenSSL::PKey::RSA.new options.fetch(:key) - # FIXME: VERY VERY VERY VERY BAD RELEASE BLOCKER BAD + # We don't presently support verifying client certificates + # TODO: support client certificates! ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE @tcpserver = Celluloid::IO::TCPServer.new(host, port) - @server = Celluloid::IO::SSLServer.new(@tcpserver, ssl_context) + @server = Celluloid::IO::SSLServer.new(@tcpserver, ssl_context) + @server.listen(backlog) @callback = callback async.run end def run loop do begin socket = @server.accept - rescue OpenSSL::SSL::SSLError - # TODO: log this? + rescue OpenSSL::SSL::SSLError => ex + Logger.warn "Error accepting SSLSocket: #{ex.class}: #{ex.to_s}" retry end async.handle_connection socket end