mirror of
https://github.com/processone/ejabberd.git
synced 2024-06-08 21:43:07 +02:00
Resolve all addresses from SRV lookup
This commit is contained in:
parent
f6e2840947
commit
28f4131d50
|
@ -878,21 +878,23 @@ a_lookup(HostPorts, State) ->
|
||||||
HostPortFamilies = [{Host, Port, Family}
|
HostPortFamilies = [{Host, Port, Family}
|
||||||
|| {Host, Port} <- HostPorts,
|
|| {Host, Port} <- HostPorts,
|
||||||
Family <- get_address_families(State)],
|
Family <- get_address_families(State)],
|
||||||
a_lookup(HostPortFamilies, State, {error, nxdomain}).
|
a_lookup(HostPortFamilies, State, [], {error, nxdomain}).
|
||||||
|
|
||||||
-spec a_lookup([{inet:hostname(), inet:port_number(), inet:address_family()}],
|
-spec a_lookup([{inet:hostname(), inet:port_number(), inet:address_family()}],
|
||||||
state(), network_error()) -> {ok, [ip_port()]} | network_error().
|
state(), [ip_port()], network_error()) -> {ok, [ip_port()]} | network_error().
|
||||||
a_lookup([{Host, Port, Family}|HostPortFamilies], State, _) ->
|
a_lookup([{Host, Port, Family}|HostPortFamilies], State, Acc, Err) ->
|
||||||
Timeout = get_dns_timeout(State),
|
Timeout = get_dns_timeout(State),
|
||||||
Retries = get_dns_retries(State),
|
Retries = get_dns_retries(State),
|
||||||
case a_lookup(Host, Port, Family, Timeout, Retries) of
|
case a_lookup(Host, Port, Family, Timeout, Retries) of
|
||||||
{error, _} = Err ->
|
{error, Reason} ->
|
||||||
a_lookup(HostPortFamilies, State, Err);
|
a_lookup(HostPortFamilies, State, Acc, {error, Reason});
|
||||||
{ok, AddrPorts} ->
|
{ok, AddrPorts} ->
|
||||||
{ok, AddrPorts}
|
a_lookup(HostPortFamilies, State, Acc ++ AddrPorts, Err)
|
||||||
end;
|
end;
|
||||||
a_lookup([], _State, Err) ->
|
a_lookup([], _State, [], Err) ->
|
||||||
Err.
|
Err;
|
||||||
|
a_lookup([], _State, Acc, _) ->
|
||||||
|
{ok, Acc}.
|
||||||
|
|
||||||
-spec a_lookup(inet:hostname(), inet:port_number(), inet:address_family(),
|
-spec a_lookup(inet:hostname(), inet:port_number(), inet:address_family(),
|
||||||
timeout(), integer()) -> {ok, [ip_port()]} | network_error().
|
timeout(), integer()) -> {ok, [ip_port()]} | network_error().
|
||||||
|
|
Loading…
Reference in New Issue
Block a user