mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-10-08 00:02:42 -04:00
added support for resolve timeout in the system resolver
This commit is contained in:
parent
c17a260fe8
commit
4641797a7f
@ -158,10 +158,18 @@ module HTTPX
|
|||||||
def async_resolve(connection, hostname, scheme)
|
def async_resolve(connection, hostname, scheme)
|
||||||
families = connection.options.ip_families
|
families = connection.options.ip_families
|
||||||
log { "resolver: query for #{hostname}" }
|
log { "resolver: query for #{hostname}" }
|
||||||
|
resolve_timeout = @timeouts[connection.origin.host].first
|
||||||
|
|
||||||
Thread.start do
|
Thread.start do
|
||||||
Thread.current.report_on_exception = false
|
Thread.current.report_on_exception = false
|
||||||
begin
|
begin
|
||||||
addrs = __addrinfo_resolve(hostname, scheme)
|
addrs = if resolve_timeout
|
||||||
|
Timeout.timeout(resolve_timeout) do
|
||||||
|
__addrinfo_resolve(hostname, scheme)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
__addrinfo_resolve(hostname, scheme)
|
||||||
|
end
|
||||||
addrs = addrs.sort_by(&:afamily).group_by(&:afamily)
|
addrs = addrs.sort_by(&:afamily).group_by(&:afamily)
|
||||||
families.each do |family|
|
families.each do |family|
|
||||||
addresses = addrs[family]
|
addresses = addrs[family]
|
||||||
@ -174,6 +182,15 @@ module HTTPX
|
|||||||
@pipe_write.putc(DONE) unless @pipe_write.closed?
|
@pipe_write.putc(DONE) unless @pipe_write.closed?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
rescue Timeout::Error => e
|
||||||
|
ex = ResolveTimeoutError.new(resolve_timeout, e.message)
|
||||||
|
ex.set_backtrace(ex.backtrace)
|
||||||
|
@pipe_mutex.synchronize do
|
||||||
|
families.each do |family|
|
||||||
|
@ips.unshift([family, connection, ex])
|
||||||
|
@pipe_write.putc(ERROR) unless @pipe_write.closed?
|
||||||
|
end
|
||||||
|
end
|
||||||
rescue StandardError => e
|
rescue StandardError => e
|
||||||
@pipe_mutex.synchronize do
|
@pipe_mutex.synchronize do
|
||||||
families.each do |family|
|
families.each do |family|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user