allow early resolve errors to bubble up the session just like lack of nameserver

This commit is contained in:
HoneyryderChuck 2023-11-05 00:11:11 +00:00
parent b6611ec321
commit 6106f5cd43
2 changed files with 14 additions and 6 deletions

View File

@ -65,20 +65,28 @@ module HTTPX
unless connection.state == :closed ||
# double emission check
(connection.addresses && addresses.intersect?(connection.addresses))
emit_resolved_connection(connection, addresses)
emit_resolved_connection(connection, addresses, early_resolve)
end
end
else
emit_resolved_connection(connection, addresses)
emit_resolved_connection(connection, addresses, early_resolve)
end
end
private
def emit_resolved_connection(connection, addresses)
connection.addresses = addresses
def emit_resolved_connection(connection, addresses, early_resolve)
begin
connection.addresses = addresses
emit(:resolve, connection)
emit(:resolve, connection)
rescue StandardError => e
if early_resolve
throw(:resolve_error, e)
else
emit(:error, connection, e)
end
end
end
def early_resolve(connection, hostname: connection.origin.host)

View File

@ -22,7 +22,7 @@ module HTTPX
private
def emit_resolved_connection: (Connection connection, Array[IPAddr] addresses) -> void
def emit_resolved_connection: (Connection connection, Array[IPAddr] addresses, bool early_resolve) -> void
def initialize: (ip_family? family, options options) -> void