mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-10-04 00:00:37 -04:00
improve resolver logs to include record family in prefix
also, fixed some of the arithmetic associated with logging timeout logs
This commit is contained in:
parent
17003840d3
commit
44311d08a5
@ -82,7 +82,9 @@ module HTTPX
|
||||
|
||||
if hostname.nil?
|
||||
hostname = connection.peer.host
|
||||
log { "resolver: resolve IDN #{connection.peer.non_ascii_hostname} as #{hostname}" } if connection.peer.non_ascii_hostname
|
||||
log do
|
||||
"resolver #{FAMILY_TYPES[@record_type]}: resolve IDN #{connection.peer.non_ascii_hostname} as #{hostname}"
|
||||
end if connection.peer.non_ascii_hostname
|
||||
|
||||
hostname = @resolver.generate_candidates(hostname).each do |name|
|
||||
@queries[name.to_s] = connection
|
||||
@ -90,7 +92,7 @@ module HTTPX
|
||||
else
|
||||
@queries[hostname] = connection
|
||||
end
|
||||
log { "resolver: query #{FAMILY_TYPES[RECORD_TYPES[@family]]} for #{hostname}" }
|
||||
log { "resolver #{FAMILY_TYPES[@record_type]}: query for #{hostname}" }
|
||||
|
||||
begin
|
||||
request = build_request(hostname)
|
||||
|
@ -63,7 +63,10 @@ module HTTPX
|
||||
@ns_index += 1
|
||||
nameserver = @nameserver
|
||||
if nameserver && @ns_index < nameserver.size
|
||||
log { "resolver: failed resolving on nameserver #{@nameserver[@ns_index - 1]} (#{e.message})" }
|
||||
log do
|
||||
"resolver #{FAMILY_TYPES[@record_type]}: " \
|
||||
"failed resolving on nameserver #{@nameserver[@ns_index - 1]} (#{e.message})"
|
||||
end
|
||||
transition(:idle)
|
||||
@timeouts.clear
|
||||
else
|
||||
@ -140,17 +143,22 @@ module HTTPX
|
||||
|
||||
return unless timeout <= 0
|
||||
|
||||
elapsed_after = @_timeouts[@_timeouts.size - @timeouts[host].size]
|
||||
@timeouts[host].shift
|
||||
|
||||
if !@timeouts[host].empty?
|
||||
log { "resolver: timeout after #{timeout}s, retry(#{@timeouts[host].first}) #{host}..." }
|
||||
log do
|
||||
"resolver #{FAMILY_TYPES[@record_type]}: timeout after #{elapsed_after}s, retry (with #{@timeouts[host].first}s) #{host}..."
|
||||
end
|
||||
# must downgrade to tcp AND retry on same host as last
|
||||
downgrade_socket
|
||||
resolve(connection, h)
|
||||
elsif @ns_index + 1 < @nameserver.size
|
||||
# try on the next nameserver
|
||||
@ns_index += 1
|
||||
log { "resolver: failed resolving #{host} on nameserver #{@nameserver[@ns_index - 1]} (timeout error)" }
|
||||
log do
|
||||
"resolver #{FAMILY_TYPES[@record_type]}: failed resolving #{host} on nameserver #{@nameserver[@ns_index - 1]} (timeout error)"
|
||||
end
|
||||
transition(:idle)
|
||||
@timeouts.clear
|
||||
resolve(connection, h)
|
||||
@ -326,7 +334,7 @@ module HTTPX
|
||||
transition(:idle)
|
||||
transition(:open)
|
||||
end
|
||||
log { "resolver: ALIAS #{hostname_alias} for #{name}" }
|
||||
log { "resolver #{FAMILY_TYPES[@record_type]}: ALIAS #{hostname_alias} for #{name}" }
|
||||
resolve(connection, hostname_alias)
|
||||
return
|
||||
end
|
||||
@ -352,7 +360,10 @@ module HTTPX
|
||||
|
||||
if hostname.nil?
|
||||
hostname = connection.peer.host
|
||||
log { "resolver: resolve IDN #{connection.peer.non_ascii_hostname} as #{hostname}" } if connection.peer.non_ascii_hostname
|
||||
log do
|
||||
"resolver #{FAMILY_TYPES[@record_type]}: " \
|
||||
"resolve IDN #{connection.peer.non_ascii_hostname} as #{hostname}"
|
||||
end if connection.peer.non_ascii_hostname
|
||||
|
||||
hostname = generate_candidates(hostname).each do |name|
|
||||
@queries[name] = connection
|
||||
@ -360,7 +371,7 @@ module HTTPX
|
||||
else
|
||||
@queries[hostname] = connection
|
||||
end
|
||||
log { "resolver: query #{@record_type.name.split("::").last} for #{hostname}" }
|
||||
log { "resolver #{FAMILY_TYPES[@record_type]}: query for #{hostname}" }
|
||||
begin
|
||||
@write_buffer << encode_dns_query(hostname)
|
||||
rescue Resolv::DNS::EncodeError => e
|
||||
@ -397,10 +408,10 @@ module HTTPX
|
||||
|
||||
case @socket_type
|
||||
when :udp
|
||||
log { "resolver: server: udp://#{ip}:#{port}..." }
|
||||
log { "resolver #{FAMILY_TYPES[@record_type]}: server: udp://#{ip}:#{port}..." }
|
||||
UDP.new(ip, port, @options)
|
||||
when :tcp
|
||||
log { "resolver: server: tcp://#{ip}:#{port}..." }
|
||||
log { "resolver #{FAMILY_TYPES[@record_type]}: server: tcp://#{ip}:#{port}..." }
|
||||
origin = URI("tcp://#{ip}:#{port}")
|
||||
TCP.new(origin, [ip], @options)
|
||||
end
|
||||
|
@ -72,13 +72,16 @@ module HTTPX
|
||||
# double emission check, but allow early resolution to work
|
||||
return if !early_resolve && connection.addresses && !addresses.intersect?(connection.addresses)
|
||||
|
||||
log { "resolver: answer #{FAMILY_TYPES[RECORD_TYPES[family]]} #{connection.peer.host}: #{addresses.inspect}" }
|
||||
log do
|
||||
"resolver #{FAMILY_TYPES[RECORD_TYPES[family]]}: " \
|
||||
"answer #{FAMILY_TYPES[RECORD_TYPES[family]]} #{connection.peer.host}: #{addresses.inspect}"
|
||||
end
|
||||
if @current_selector && # if triggered by early resolve, session may not be here yet
|
||||
!connection.io &&
|
||||
connection.options.ip_families.size > 1 &&
|
||||
family == Socket::AF_INET &&
|
||||
addresses.first.to_s != connection.peer.host.to_s
|
||||
log { "resolver: A response, applying resolution delay..." }
|
||||
log { "resolver #{FAMILY_TYPES[RECORD_TYPES[family]]}: applying resolution delay..." }
|
||||
@current_selector.after(0.05) do
|
||||
unless connection.state == :closed ||
|
||||
# double emission check
|
||||
|
@ -162,7 +162,9 @@ module HTTPX
|
||||
|
||||
hostname = connection.peer.host
|
||||
scheme = connection.origin.scheme
|
||||
log { "resolver: resolve IDN #{connection.peer.non_ascii_hostname} as #{hostname}" } if connection.peer.non_ascii_hostname
|
||||
log do
|
||||
"resolver: resolve IDN #{connection.peer.non_ascii_hostname} as #{hostname}"
|
||||
end if connection.peer.non_ascii_hostname
|
||||
|
||||
transition(:open)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user