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 enqueue_pending_requests_from_parser(@parser) 72 73 @parser = request.options.h2c_class.new(@write_buffer, @options) 74 set_parser_callbacks(@parser) 75 @inflight += 1 # request is being completed below 76 @parser.upgrade(request, response) 77 @upgrade_protocol = "h2c" 78 end