diff options
author | Alexey Shchepin <alexey@process-one.net> | 2004-01-06 20:37:14 +0000 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2004-01-06 20:37:14 +0000 |
commit | 41cc38aa6fd57a37fa6a9f29be4d1cfd111ef493 (patch) | |
tree | ea09bbef04018affa7818be89ec5438576226213 | |
parent | * src/ejabberd_app.erl: Bugfix (diff) |
* src/ejabberd_router.erl: Added monitoring of processess that
serve domains
SVN Revision: 197
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | src/ejabberd_router.erl | 17 |
2 files changed, 20 insertions, 0 deletions
@@ -1,5 +1,8 @@ 2004-01-06 Alexey Shchepin <alexey@sevcom.net> + * src/ejabberd_router.erl: Added monitoring of processess that + serve domains + * src/ejabberd_app.erl: Bugfix 2004-01-03 Alexey Shchepin <alexey@sevcom.net> diff --git a/src/ejabberd_router.erl b/src/ejabberd_router.erl index 74352254..700724ea 100644 --- a/src/ejabberd_router.erl +++ b/src/ejabberd_router.erl @@ -38,6 +38,7 @@ init() -> {attributes, record_info(fields, route)}]), mnesia:add_table_copy(route, node(), ram_copies), + mnesia:subscribe({table, route, simple}), loop(). loop() -> @@ -65,6 +66,22 @@ loop() -> end, mnesia:transaction(F), loop(); + {mnesia_table_event, {write, #route{pid = Pid}, _ActivityId}} -> + erlang:monitor(process, Pid), + loop(); + {'DOWN', _Ref, _Type, Pid, _Info} -> + F = fun() -> + Es = mnesia:select( + route, + [{#route{pid = Pid, _ = '_'}, + [], + ['$_']}]), + lists:foreach(fun(E) -> + mnesia:delete_object(E) + end, Es) + end, + mnesia:transaction(F), + loop(); _ -> loop() end. |