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
UPCASED = {
"www-authenticate" => "WWW-Authenticate",
"http2-settings" => "HTTP2-Settings"
}
def capitalized(field)
field.to_s.split("-").map(&:capitalize).join("-")
UPCASED[field] || field.to_s.split("-").map(&:capitalize).join("-")
end
end
Channel.register "http/1.1", Channel::HTTP1

View File

@ -16,6 +16,8 @@ module HTTPX
upgrade_request = requests.first
return super unless valid_h2c_upgrade_request?(upgrade_request)
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)
# TODO: validate!
upgrade_response = __send_reqs(*upgrade_request).first