diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-02-28 13:11:49 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-02-28 13:11:49 +0300 |
commit | ac74b7dca1332c160b26e166357aea3a3e505516 (patch) | |
tree | b1b6e511fb88327cfa5c749031bc05a6b96a708e | |
parent | Improve logging of outbound s2s auth failures (diff) |
Don't crash on malformed IP addresses
-rw-r--r-- | src/xmpp_stream_out.erl | 14 |
1 files changed, 8 insertions, 6 deletions
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. |