aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_socket.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ejabberd_socket.erl')
-rw-r--r--src/ejabberd_socket.erl29
1 files changed, 20 insertions, 9 deletions
diff --git a/src/ejabberd_socket.erl b/src/ejabberd_socket.erl
index e26fc8652..3f01dae85 100644
--- a/src/ejabberd_socket.erl
+++ b/src/ejabberd_socket.erl
@@ -49,6 +49,7 @@
sockname/1, peername/1]).
-include("ejabberd.hrl").
+-include("xmpp.hrl").
-include("logger.hrl").
-type sockmod() :: ejabberd_http_bind |
@@ -150,15 +151,25 @@ connect(Addr, Port, Opts, Timeout, Owner) ->
end.
starttls(SocketData, TLSOpts) ->
- {ok, TLSSocket} = fast_tls:tcp_to_tls(SocketData#socket_state.socket, TLSOpts),
- ejabberd_receiver:starttls(SocketData#socket_state.receiver, TLSSocket),
- SocketData#socket_state{socket = TLSSocket, sockmod = fast_tls}.
+ case fast_tls:tcp_to_tls(SocketData#socket_state.socket, TLSOpts) of
+ {ok, TLSSocket} ->
+ ejabberd_receiver:starttls(SocketData#socket_state.receiver, TLSSocket),
+ {ok, SocketData#socket_state{socket = TLSSocket, sockmod = fast_tls}};
+ Err ->
+ ?ERROR_MSG("starttls failed: ~p", [Err]),
+ Err
+ end.
starttls(SocketData, TLSOpts, Data) ->
- {ok, TLSSocket} = fast_tls:tcp_to_tls(SocketData#socket_state.socket, TLSOpts),
- ejabberd_receiver:starttls(SocketData#socket_state.receiver, TLSSocket),
- send(SocketData, Data),
- SocketData#socket_state{socket = TLSSocket, sockmod = fast_tls}.
+ case fast_tls:tcp_to_tls(SocketData#socket_state.socket, TLSOpts) of
+ {ok, TLSSocket} ->
+ ejabberd_receiver:starttls(SocketData#socket_state.receiver, TLSSocket),
+ send(SocketData, Data),
+ {ok, SocketData#socket_state{socket = TLSSocket, sockmod = fast_tls}};
+ Err ->
+ ?ERROR_MSG("starttls failed: ~p", [Err]),
+ Err
+ end.
compress(SocketData) -> compress(SocketData, undefined).
@@ -184,10 +195,10 @@ send(SocketData, Data) ->
ok -> ok;
{error, timeout} ->
?INFO_MSG("Timeout on ~p:send",[SocketData#socket_state.sockmod]),
- exit(normal);
+ {error, timeout};
Error ->
?DEBUG("Error in ~p:send: ~p",[SocketData#socket_state.sockmod, Error]),
- exit(normal)
+ Error
end.
%% Can only be called when in c2s StateData#state.xml_socket is true