added missing upgrade, HTTP2-Settings in connection for h2c flow

This commit is contained in:
HoneyryderChuck 2018-01-09 21:41:15 +00:00
parent e762faedfa
commit d7fd96763e
2 changed files with 8 additions and 1 deletions

View File

@ -178,8 +178,13 @@ module HTTPX
end end
end end
UPCASED = {
"www-authenticate" => "WWW-Authenticate",
"http2-settings" => "HTTP2-Settings"
}
def capitalized(field) def capitalized(field)
field.to_s.split("-").map(&:capitalize).join("-") UPCASED[field] || field.to_s.split("-").map(&:capitalize).join("-")
end end
end end
Channel.register "http/1.1", Channel::HTTP1 Channel.register "http/1.1", Channel::HTTP1

View File

@ -16,6 +16,8 @@ module HTTPX
upgrade_request = requests.first upgrade_request = requests.first
return super unless valid_h2c_upgrade_request?(upgrade_request) return super unless valid_h2c_upgrade_request?(upgrade_request)
upgrade_request.headers["upgrade"] = "h2c" upgrade_request.headers["upgrade"] = "h2c"
upgrade_request.headers.add("connection", "upgrade")
upgrade_request.headers.add("connection", "http2-settings")
upgrade_request.headers["http2-settings"] = FrameBuilder.settings_value(@default_options.http2_settings) upgrade_request.headers["http2-settings"] = FrameBuilder.settings_value(@default_options.http2_settings)
# TODO: validate! # TODO: validate!
upgrade_response = __send_reqs(*upgrade_request).first upgrade_response = __send_reqs(*upgrade_request).first