diff --git a/ChangeLog b/ChangeLog index 4c7f7db55..2fc72bef5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2006-12-31 Alexey Shchepin + + * src/ejabberd_s2s_out.erl: Bugfix + 2006-12-21 Mickael Remond * src/mod_private_odbc: Bugfix: an internal error was returned diff --git a/src/ejabberd_s2s_out.erl b/src/ejabberd_s2s_out.erl index 80fa78baf..d095393b5 100644 --- a/src/ejabberd_s2s_out.erl +++ b/src/ejabberd_s2s_out.erl @@ -141,7 +141,11 @@ init([From, Server, Type]) -> %% {stop, Reason, NewStateData} %%---------------------------------------------------------------------- open_socket(init, StateData) -> - AddrList = get_addr_port(StateData#state.server), + AddrList = case idna:domain_utf8_to_ascii(StateData#state.server) of + false -> []; + ASCIIAddr -> + get_addr_port(ASCIIAddr) + end, case lists:foldl(fun({Addr, Port}, Acc) -> case Acc of {ok, Socket} -> @@ -174,28 +178,24 @@ open_socket(_, StateData) -> %%---------------------------------------------------------------------- open_socket1(Addr, Port) -> - Res = case idna:domain_utf8_to_ascii(Addr) of - false -> {error, badarg}; - ASCIIAddr -> - ?DEBUG("s2s_out: connecting to ~s:~p~n", [ASCIIAddr, Port]), - case catch ejabberd_socket:connect( - ASCIIAddr, Port, - [binary, {packet, 0}, - {active, false}]) of - {ok, _Socket} = R -> R; - {error, Reason1} -> - ?DEBUG("s2s_out: connect return ~p~n", [Reason1]), - catch ejabberd_socket:connect( - Addr, Port, - [binary, {packet, 0}, - {active, false}, inet6]); - {'EXIT', Reason1} -> - ?DEBUG("s2s_out: connect crashed ~p~n", [Reason1]), - catch ejabberd_socket:connect( - Addr, Port, - [binary, {packet, 0}, - {active, false}, inet6]) - end + ?DEBUG("s2s_out: connecting to ~s:~p~n", [Addr, Port]), + Res = case catch ejabberd_socket:connect( + Addr, Port, + [binary, {packet, 0}, + {active, false}]) of + {ok, _Socket} = R -> R; + {error, Reason1} -> + ?DEBUG("s2s_out: connect return ~p~n", [Reason1]), + catch ejabberd_socket:connect( + Addr, Port, + [binary, {packet, 0}, + {active, false}, inet6]); + {'EXIT', Reason1} -> + ?DEBUG("s2s_out: connect crashed ~p~n", [Reason1]), + catch ejabberd_socket:connect( + Addr, Port, + [binary, {packet, 0}, + {active, false}, inet6]) end, case Res of {ok, Socket} ->