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