Sha256: 2cdaaebc173ac922eb0ca8bdb27e23370a150188b07dca022c85f686557b2a5a
Contents?: true
Size: 1.54 KB
Versions: 4
Compression:
Stored size: 1.54 KB
Contents
require 'envoy/server/channel' module Envoy module Server module Web include EM::P::LineText2 def post_init @header = "" @connection = "close" end def unbind @channel.trunk.channels.delete @channel.id if @channel end def receive_line line @first_line ||= line if line == "" trunk = Trunk.trunks[@host].sample || raise("No trunk for #{@host}.#{$zone}") @header << "Connection: #{@connection}\r\n\r\n" @channel = Channel.new(trunk, self, @header) @channel.message "%s %s" % [Socket.unpack_sockaddr_in(get_peername)[1], @first_line] set_text_mode elsif line =~ /^connection:\s*upgrade$/i @connection = "upgrade" elsif line =~ /^keep-alive:/i elsif line =~ /^host:\s*([^:]*)/i @host = $1 raise "Request for #{@host} is not in #{$zone}" unless @host.end_with?($zone) @host = @host[0...-$zone.length] @host = @host.split(".").last @header << line + "\r\n" elsif @header.size > 4096 raise "Header's too long for my liking" else @header << line + "\r\n" end rescue RuntimeError => e send_data "HTTP/1.0 500 Internal Server Error\r\n" send_data "Content-Type: text/plain\r\n" send_data "\r\n" send_data "#{e.message}\r\n" close_connection true end def receive_binary_data data @channel.stream data end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
envoy-proxy-0.0.14 | lib/envoy/server/web.rb |
envoy-proxy-0.0.12 | lib/envoy/server/web.rb |
envoy-proxy-0.0.11 | lib/envoy/server/web.rb |
envoy-proxy-0.0.10 | lib/envoy/server/web.rb |