aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-02-28 13:11:49 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-02-28 13:11:49 +0300
commitac74b7dca1332c160b26e166357aea3a3e505516 (patch)
treeb1b6e511fb88327cfa5c749031bc05a6b96a708e
parentImprove logging of outbound s2s auth failures (diff)
Don't crash on malformed IP addresses
-rw-r--r--src/xmpp_stream_out.erl14
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.