From: Evgeniy Khramtsov Date: Tue, 28 Feb 2017 10:11:49 +0000 (+0300) Subject: Don't crash on malformed IP addresses X-Git-Tag: 17.03~56 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ac74b7dca1332c160b26e166357aea3a3e505516;p=ejabberd Don't crash on malformed IP addresses --- diff --git a/src/xmpp_stream_out.erl b/src/xmpp_stream_out.erl index 57f674ec0..6137a587b 100644 --- a/src/xmpp_stream_out.erl +++ b/src/xmpp_stream_out.erl @@ -964,16 +964,18 @@ connect(AddrPorts, #{sockmod := SockMod} = State) -> {ok, term(), ip_port()} | network_error(). connect([{Addr, Port}|AddrPorts], SockMod, Timeout, _) -> Type = get_addr_type(Addr), - case SockMod:connect(Addr, Port, - [binary, {packet, 0}, - {send_timeout, ?TCP_SEND_TIMEOUT}, - {send_timeout_close, true}, - {active, false}, Type], - Timeout) of + try SockMod:connect(Addr, Port, + [binary, {packet, 0}, + {send_timeout, ?TCP_SEND_TIMEOUT}, + {send_timeout_close, true}, + {active, false}, Type], + Timeout) of {ok, Socket} -> {ok, Socket, {Addr, Port}}; Err -> connect(AddrPorts, SockMod, Timeout, Err) + catch _:badarg -> + connect(AddrPorts, SockMod, Timeout, {error, einval}) end; connect([], _SockMod, _Timeout, Err) -> Err.