HTTPCLIENT-2314: Handle gracefully a failure of DnsResolver to return a list of resolved addresses (#533)

This commit is contained in:
Philip Helger 2024-01-07 15:44:40 +01:00 committed by Oleg Kalnichevski
parent aad5987246
commit 8228ddf28a
3 changed files with 10 additions and 2 deletions

View File

@ -90,7 +90,7 @@ public class InMemoryDnsResolver implements DnsResolver {
LOG.info("Resolving {} to {}", host, Arrays.deepToString(resolvedAddresses));
}
if(resolvedAddresses == null){
throw new UnknownHostException(host + " cannot be resolved");
throw new UnknownHostException(host);
}
return resolvedAddresses;
}

View File

@ -32,6 +32,7 @@ import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.UnknownHostException;
import java.util.Arrays;
import org.apache.hc.client5.http.ConnectExceptionSupport;
@ -143,8 +144,12 @@ public class DefaultHttpClientConnectionOperator implements HttpClientConnection
remoteAddresses = this.dnsResolver.resolve(host.getHostName());
if (LOG.isDebugEnabled()) {
LOG.debug("{} resolved to {}", host.getHostName(), Arrays.asList(remoteAddresses));
LOG.debug("{} resolved to {}", host.getHostName(), remoteAddresses == null ? "null" : Arrays.asList(remoteAddresses));
}
if (remoteAddresses == null || remoteAddresses.length == 0) {
throw new UnknownHostException(host.getHostName());
}
}
final Timeout soTimeout = socketConfig.getSoTimeout();

View File

@ -111,6 +111,9 @@ final class MultihomeIOSessionRequester {
final InetAddress[] remoteAddresses;
try {
remoteAddresses = dnsResolver.resolve(remoteEndpoint.getHostName());
if (remoteAddresses == null || remoteAddresses.length == 0) {
throw new UnknownHostException(remoteEndpoint.getHostName());
}
} catch (final UnknownHostException ex) {
future.failed(ex);
return future;