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