]> granicus.if.org Git - ejabberd/commitdiff
* src/ejabberd_lstener.erl: Fix listeners
authorBadlop <badlop@process-one.net>
Fri, 24 Oct 2008 17:26:11 +0000 (17:26 +0000)
committerBadlop <badlop@process-one.net>
Fri, 24 Oct 2008 17:26:11 +0000 (17:26 +0000)
* src/ejabberd_sup.erl: Likewise
* src/gen_mod.erl: Likewise

SVN Revision: 1665

ChangeLog
src/ejabberd_listener.erl
src/ejabberd_sup.erl
src/gen_mod.erl

index 17b7e53ebe3c79c4f2482e07e767fbe8e55f4968..2a4946ba15dedcab905e84264ab5fb36346f5329 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-10-24  Badlop  <badlop@process-one.net>
+
+       * src/ejabberd_lstener.erl: Fix listeners
+       * src/ejabberd_sup.erl: Likewise
+       * src/gen_mod.erl: Likewise
+
 2008-10-23  Alexey Shchepin  <alexey@process-one.net>
 
        * src/ejabberd_frontend_socket.erl: Fixed SSL sockets
index b3753cc8498d89b03d194a58093d284ed6feb750..9c46f6d4cd726f512fca2cfbbbb8330c6daecd0a 100644 (file)
@@ -58,8 +58,9 @@ start_listeners() ->
 
 start(Port, Module, Opts) ->
     %% Check if the module is an ejabberd listener or an independent listener
-    case Module:socket_type() of
-       independent -> Module:start_listener(Port, Opts);
+    ModuleRaw = strip_frontend(Module),
+    case ModuleRaw:socket_type() of
+       independent -> ModuleRaw:start_listener(Port, Opts);
        _ -> start_dependent(Port, Module, Opts)
     end.
 
@@ -120,12 +121,11 @@ accept(ListenSocket, Module, Opts) ->
                _ ->
                    ok
            end,
-           case Module of
-               {frontend, Mod} ->
-                   ejabberd_frontend_socket:start(Mod, gen_tcp, Socket, Opts);
-               _ ->
-                   ejabberd_socket:start(Module, gen_tcp, Socket, Opts)
-           end,
+           CallMod = case is_frontend(Module) of
+                         true -> ejabberd_frontend_socket;
+                         false -> ejabberd_socket
+                     end,
+           CallMod:start(strip_frontend(Module), gen_tcp, Socket, Opts),
            accept(ListenSocket, Module, Opts);
        {error, Reason} ->
            ?INFO_MSG("(~w) Failed TCP accept: ~w",
@@ -137,11 +137,12 @@ start_listener(Port, Module, Opts) ->
     start_module_sup(Port, Module),
     start_listener_sup(Port, Module, Opts).
 
+%% Only required for some listeners, but doing for all doesn't hurt
 start_module_sup(_Port, Module) ->
     Proc1 = gen_mod:get_module_proc("sup", Module),
     ChildSpec1 =
        {Proc1,
-        {ejabberd_tmp_sup, start_link, [Proc1, Module]},
+        {ejabberd_tmp_sup, start_link, [Proc1, strip_frontend(Module)]},
         permanent,
         infinity,
         supervisor,
@@ -188,3 +189,10 @@ delete_listener(Port, Module) ->
     ejabberd_config:add_local_option(listen, Ports1),
     stop_listener(Port, Module).
 
+is_frontend({frontend, _Module}) -> true;
+is_frontend(_) -> false.
+
+%% @doc(FrontMod) -> atom()
+%% where FrontMod = atom() | {frontend, atom()}
+strip_frontend({frontend, Module}) -> Module;
+strip_frontend(Module) when is_atom(Module) -> Module.
index 8475e2592b7084f04112c6b4f0d4377d529567f5..01efbfd76bb0ed4de7458d03780acf2744b850b5 100644 (file)
@@ -99,6 +99,21 @@ init([]) ->
         infinity,
         supervisor,
         [ejabberd_tmp_sup]},
+    C2SSupervisor =
+       {ejabberd_c2s_sup,
+        {ejabberd_tmp_sup, start_link, [ejabberd_c2s_sup, ejabberd_c2s]},
+        permanent,
+        infinity,
+        supervisor,
+        [ejabberd_tmp_sup]},
+    S2SInSupervisor =
+       {ejabberd_s2s_in_sup,
+        {ejabberd_tmp_sup, start_link,
+         [ejabberd_s2s_in_sup, ejabberd_s2s_in]},
+        permanent,
+        infinity,
+        supervisor,
+        [ejabberd_tmp_sup]},
     S2SOutSupervisor =
        {ejabberd_s2s_out_sup,
         {ejabberd_tmp_sup, start_link,
@@ -115,6 +130,14 @@ init([]) ->
         infinity,
         supervisor,
         [ejabberd_tmp_sup]},
+    HTTPSupervisor =
+       {ejabberd_http_sup,
+        {ejabberd_tmp_sup, start_link,
+         [ejabberd_http_sup, ejabberd_http]},
+        permanent,
+        infinity,
+        supervisor,
+        [ejabberd_tmp_sup]},
     HTTPPollSupervisor =
        {ejabberd_http_poll_sup,
         {ejabberd_tmp_sup, start_link,
@@ -148,8 +171,11 @@ init([]) ->
           S2S,
           Local,
           ReceiverSupervisor,
+          C2SSupervisor,
+          S2SInSupervisor,
           S2SOutSupervisor,
           ServiceSupervisor,
+          HTTPSupervisor,
           HTTPPollSupervisor,
           IQSupervisor,
           FrontendSocketSupervisor,
index bbc4e860d16ee42ff57b947597599eee7f97aae8..0457538146d04697ac2f8061a2d99cbd5c27bf97 100644 (file)
@@ -224,6 +224,8 @@ get_hosts(Opts, Prefix) ->
            Hosts
     end.
 
+get_module_proc(Host, {frontend, Base}) ->
+    get_module_proc("frontend_" ++ Host, Base);
 get_module_proc(Host, Base) ->
     list_to_atom(atom_to_list(Base) ++ "_" ++ Host).