From 4f25eb7bb395efc8a35202d1ddfc8311e00ffd45 Mon Sep 17 00:00:00 2001 From: kenichi nakamura Date: Tue, 18 Oct 2016 10:53:55 -0700 Subject: [PATCH] use a case-insenstive header hash for upgrade server --- example/upgrade_server.rb | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/example/upgrade_server.rb b/example/upgrade_server.rb index 75f40c8..35b0576 100644 --- a/example/upgrade_server.rb +++ b/example/upgrade_server.rb @@ -1,3 +1,5 @@ +# frozen_string_literals: true + require_relative 'helper' require 'http_parser' require 'base64' @@ -82,6 +84,15 @@ def on_message_complete end end +def request_header_hash received_hash = {} + Hash.new do |hash, key| + k = key.to_s.upcase + k.gsub! '_', '-' + _, value = received_hash.find {|header_key,v| header_key.upcase == k} + hash[key] = value if value + end +end + loop do sock = server.accept puts 'New TCP connection!' @@ -99,8 +110,11 @@ def on_message_complete end conn.on(:stream) do |stream| + log = Logger.new(stream.id) - req, buffer = {}, '' + request_headers = {} + req = request_header_hash(request_headers) + buffer = '' stream.on(:active) { log.info 'client opened new stream' } stream.on(:close) do @@ -108,7 +122,7 @@ def on_message_complete end stream.on(:headers) do |h| - req = Hash[*h.flatten] + request_headers.merge! Hash[*h.flatten] log.info "request headers: #{h}" end