diff options
| author | Pawel Antemijczuk <pawel.antemijczuk1@motorolasolutions.com> | 2021-01-26 11:33:13 +0100 |
|---|---|---|
| committer | Pawel Antemijczuk <pawel.antemijczuk1@motorolasolutions.com> | 2021-01-26 11:33:13 +0100 |
| commit | 5d0aecd819334286f720b9270cdfb42fb82a27f9 (patch) | |
| tree | 99e84e02b4ab45e86695f2a9acd524f14146a472 | |
| parent | 4f43f393bf85e5cd373c84660cc07700fa731e72 (diff) | |
| download | rabbitmq-server-git-5d0aecd819334286f720b9270cdfb42fb82a27f9.tar.gz | |
Resolve DNS until first success
| -rw-r--r-- | deps/amqp_client/src/amqp_network_connection.erl | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/deps/amqp_client/src/amqp_network_connection.erl b/deps/amqp_client/src/amqp_network_connection.erl index fd8b960b47..47d28f62aa 100644 --- a/deps/amqp_client/src/amqp_network_connection.erl +++ b/deps/amqp_client/src/amqp_network_connection.erl @@ -108,9 +108,8 @@ info_keys() -> connect(AmqpParams = #amqp_params_network{host = Host}, SIF, TypeSup, State) -> case gethostaddr(Host) of - [] -> {error, unknown_host}; - [AF|_] -> do_connect( - AF, AmqpParams, SIF, State#state{type_sup = TypeSup}) + {error, Reason} -> {error, Reason}; + AF -> do_connect(AF, AmqpParams, SIF, State#state{type_sup = TypeSup}) end. do_connect({Addr, Family}, @@ -163,9 +162,16 @@ inet_address_preference() -> end. gethostaddr(Host) -> - Lookups = [{Family, inet:getaddr(Host, Family)} - || Family <- inet_address_preference()], - [{IP, Family} || {Family, {ok, IP}} <- Lookups]. + resolve_address(Host, inet_address_preference()). + +resolve_address(Host, [Family | Other]) -> + case inet:getaddr(Host, Family) of + {ok, IP} -> {IP, Family}; + _ -> resolve_address(Host, Other) + end; +resolve_address(Host, []) -> + {error, unknown_host}. + try_handshake(AmqpParams, SIF, State = #state{sock = Sock}) -> Name = case rabbit_net:connection_string(Sock, outbound) of |
