diff options
Diffstat (limited to 'src/mod_echo.erl')
-rw-r--r-- | src/mod_echo.erl | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/mod_echo.erl b/src/mod_echo.erl index 03a25d25..5f02c400 100644 --- a/src/mod_echo.erl +++ b/src/mod_echo.erl @@ -12,7 +12,7 @@ -behaviour(gen_mod). --export([start/1, init/1]). +-export([start/1, init/1, stop/0]). -include("ejabberd.hrl"). -include("namespaces.hrl"). @@ -22,18 +22,24 @@ start(Opts) -> %Host = gen_mod:get_opt(host, Opts), Host = gen_mod:get_opt(host, Opts, "echo." ++ ?MYNAME), - spawn(?MODULE, init, [Host]). + register(ejabberd_mod_echo, spawn(?MODULE, init, [Host])). init(Host) -> ejabberd_router:register_local_route(Host), - loop(). + loop(Host). -loop() -> +loop(Host) -> receive {route, From, To, Packet} -> ejabberd_router:route(To, From, Packet), - loop(); + loop(Host); + stop -> + ejabberd_router:unregister_local_route(Host), + ok; _ -> - loop() + loop(Host) end. +stop() -> + ejabberd_mod_echo ! stop, + ok. |