Sha256: 29d922674e19b32790b7ac6dfe461bdb1c6169b7af9bee6217eb07acd6095f1f

Contents?: true

Size: 934 Bytes

Versions: 12

Compression:

Stored size: 934 Bytes

Contents

# frozen_string_literal: true

require 'bundler/setup'
require 'polyphony'
require 'localhost/authority'

authority = Localhost::Authority.fetch
server_ctx = authority.server_context

resolver = spin_loop do
  name, client = receive
  client << server_ctx
end

server_ctx.servername_cb = proc do |_socket, name|
  resolver << [name, Fiber.current]
  receive
end

opts = {
  reuse_addr:     true,
  dont_linger:    true,
  secure_context: server_ctx
}

server = Polyphony::Net.tcp_listen('localhost', 1234, opts)

puts 'Serving HTTPS on port 1234'

begin
  server.accept_loop(false) do |socket|
    spin do
      while (data = socket.gets("\n", 8192))
        if data.chomp.empty?
          socket << "HTTP/1.1 200 OK\nConnection: close\nContent-Length: 4\n\nfoo\n"
          break
        end
      end
    rescue OpenSSL::SSL::SSLError
      # ignore
    end
  end
rescue => e
  puts '*' * 40
  p e
  puts e.backtrace.join("\n")
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
polyphony-1.1.1 examples/io/https_server_sni_2.rb
polyphony-1.1 examples/io/https_server_sni_2.rb
polyphony-1.0.2 examples/io/https_server_sni_2.rb
polyphony-1.0.1 examples/io/https_server_sni_2.rb
polyphony-1.0 examples/io/https_server_sni_2.rb
polyphony-0.99.6 examples/io/https_server_sni_2.rb
polyphony-0.99.5 examples/io/https_server_sni_2.rb
polyphony-0.99.4 examples/io/https_server_sni_2.rb
polyphony-0.99.3 examples/io/https_server_sni_2.rb
polyphony-0.99.2 examples/io/https_server_sni_2.rb
polyphony-0.99.1 examples/io/https_server_sni_2.rb
polyphony-0.99 examples/io/https_server_sni_2.rb