diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2014-05-03 14:11:58 +0400 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2014-05-03 17:48:17 +0400 |
commit | 955487391d6c1be6cf7bd3ae449ef11e3b277c3f (patch) | |
tree | 00f38894fda4f315013dc1040632eec3e6a1a4a7 /src/ejabberd_listener.erl | |
parent | Always 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.erl | 33 |
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 |