Classes and Modules
Constants
DEFAULTS | = | { uri: NAMESERVER, use_get: false, }.freeze | ||
NAMESERVER | = | "https://1.1.1.1/dns-query" |
Public Class methods
new(_, options)
[show source]
# File lib/httpx/resolver/https.rb 32 def initialize(_, options) 33 super 34 @resolver_options = DEFAULTS.merge(@options.resolver_options) 35 @queries = {} 36 @requests = {} 37 @connections = [] 38 @uri = URI(@resolver_options[:uri]) 39 @uri_addresses = nil 40 @resolver = Resolv::DNS.new 41 @resolver.timeouts = @resolver_options.fetch(:timeouts, Resolver::RESOLVE_TIMEOUT) 42 @resolver.lazy_initialize 43 end
Public Instance methods
<<(connection)
[show source]
# File lib/httpx/resolver/https.rb 45 def <<(connection) 46 return if @uri.origin == connection.peer.to_s 47 48 @uri_addresses ||= HTTPX::Resolver.nolookup_resolve(@uri.host) || @resolver.getaddresses(@uri.host) 49 50 if @uri_addresses.empty? 51 ex = ResolveError.new("Can't resolve DNS server #{@uri.host}") 52 ex.set_backtrace(caller) 53 connection.force_reset 54 throw(:resolve_error, ex) 55 end 56 57 resolve(connection) 58 end
resolver_connection()
[show source]
# File lib/httpx/resolver/https.rb 68 def resolver_connection 69 # TODO: leaks connection object into the pool 70 @resolver_connection ||= @current_session.find_connection(@uri, @current_selector, 71 @options.merge(ssl: { alpn_protocols: %w[h2] })).tap do |conn| 72 emit_addresses(conn, @family, @uri_addresses) unless conn.addresses 73 end 74 end