Public Class methods
new(*)
[show source]
# File lib/httpx/plugins/h2c.rb 54 def initialize(*) 55 super 56 @h2c_handshake = false 57 end
Public Instance methods
send(request)
[show source]
# File lib/httpx/plugins/h2c.rb 59 def send(request) 60 return super if @h2c_handshake 61 62 return super unless request.valid_h2c_verb? && request.scheme == "http" 63 64 return super if @upgrade_protocol == "h2c" 65 66 @h2c_handshake = true 67 68 # build upgrade request 69 request.headers.add("connection", "upgrade") 70 request.headers.add("connection", "http2-settings") 71 request.headers["upgrade"] = "h2c" 72 request.headers["http2-settings"] = ::HTTP2::Client.settings_header(request.options.http2_settings) 73 74 super 75 end
upgrade_to_h2c(request, response)
[show source]
# File lib/httpx/plugins/h2c.rb 77 def upgrade_to_h2c(request, response) 78 prev_parser = @parser 79 80 if prev_parser 81 prev_parser.reset 82 @inflight -= prev_parser.requests.size 83 end 84 85 @parser = H2CParser.new(@write_buffer, @options) 86 set_parser_callbacks(@parser) 87 @inflight += 1 88 @parser.upgrade(request, response) 89 @upgrade_protocol = "h2c" 90 91 prev_parser.requests.each do |req| 92 req.transition(:idle) 93 send(req) 94 end 95 end