aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_listener.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2014-05-03 14:11:58 +0400
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2014-05-03 17:48:17 +0400
commit955487391d6c1be6cf7bd3ae449ef11e3b277c3f (patch)
tree00f38894fda4f315013dc1040632eec3e6a1a4a7 /src/ejabberd_listener.erl
parentAlways enable SIP at compile time (diff)
Assume tcp_init/2 and udp_init/2 now return new options
Diffstat (limited to 'src/ejabberd_listener.erl')
-rw-r--r--src/ejabberd_listener.erl33
1 files changed, 16 insertions, 17 deletions
diff --git a/src/ejabberd_listener.erl b/src/ejabberd_listener.erl
index 71f744077..d3e594971 100644
--- a/src/ejabberd_listener.erl
+++ b/src/ejabberd_listener.erl
@@ -152,19 +152,19 @@ init_udp(PortIP, Module, Opts, SockOpts, Port, IPS) ->
%% Inform my parent that this port was opened succesfully
proc_lib:init_ack({ok, self()}),
case erlang:function_exported(Module, udp_init, 2) of
+ false ->
+ udp_recv(Socket, Module, Opts);
true ->
case catch Module:udp_init(Socket, Opts) of
{'EXIT', _} = Err ->
?ERROR_MSG("failed to process callback function "
"~p:~s(~p, ~p): ~p",
- [Module, udp_init, Socket, Opts, Err]);
- _ ->
- ok
- end;
- false ->
- ok
- end,
- udp_recv(Socket, Module, Opts);
+ [Module, udp_init, Socket, Opts, Err]),
+ udp_recv(Socket, Module, Opts);
+ NewOpts ->
+ udp_recv(Socket, Module, NewOpts)
+ end
+ end;
{error, Reason} ->
socket_error(Reason, PortIP, Module, SockOpts, Port, IPS)
end.
@@ -174,20 +174,19 @@ init_tcp(PortIP, Module, Opts, SockOpts, Port, IPS) ->
%% Inform my parent that this port was opened succesfully
proc_lib:init_ack({ok, self()}),
case erlang:function_exported(Module, tcp_init, 2) of
+ false ->
+ accept(ListenSocket, Module, Opts);
true ->
case catch Module:tcp_init(ListenSocket, Opts) of
{'EXIT', _} = Err ->
?ERROR_MSG("failed to process callback function "
"~p:~s(~p, ~p): ~p",
- [Module, tcp_init, ListenSocket, Opts, Err]);
- _ ->
- ok
- end;
- false ->
- ok
- end,
- %% And now start accepting connection attempts
- accept(ListenSocket, Module, Opts).
+ [Module, tcp_init, ListenSocket, Opts, Err]),
+ accept(ListenSocket, Module, Opts);
+ NewOpts ->
+ accept(ListenSocket, Module, NewOpts)
+ end
+ end.
listen_tcp(PortIP, Module, SockOpts, Port, IPS) ->
case ets:lookup(listen_sockets, PortIP) of