summaryrefslogtreecommitdiff
path: root/src/ejabberd_router.erl
diff options
context:
space:
mode:
authortmallard <tmallard@null>2005-04-17 18:08:34 +0000
committertmallard <tmallard@null>2005-04-17 18:08:34 +0000
commit374446f8471747c878cdaf760c4bb37d17493ab7 (patch)
treee91bac5669555dcf33627e4745b04236f743126d /src/ejabberd_router.erl
parent* src/ejabberd_c2s.erl: Send new id for each new stream inside one (diff)
Merged the Process One contributions ( Virtual Hosting )
SVN Revision: 307
Diffstat (limited to 'src/ejabberd_router.erl')
-rw-r--r--src/ejabberd_router.erl67
1 files changed, 47 insertions, 20 deletions
diff --git a/src/ejabberd_router.erl b/src/ejabberd_router.erl
index ac558369..31d35554 100644
--- a/src/ejabberd_router.erl
+++ b/src/ejabberd_router.erl
@@ -13,7 +13,9 @@
-export([route/3,
register_route/1,
register_route/2,
+ register_routes/1,
unregister_route/1,
+ unregister_routes/1,
dirty_get_all_routes/0,
dirty_get_all_domains/0
]).
@@ -130,33 +132,58 @@ route(From, To, Packet) ->
end.
register_route(Domain) ->
- Pid = self(),
- F = fun() ->
- mnesia:write(#route{domain = Domain,
- pid = Pid})
- end,
- mnesia:transaction(F).
+ case jlib:nameprep(Domain) of
+ error ->
+ [] = {invalid_domain, Domain};
+ LDomain ->
+ Pid = self(),
+ F = fun() ->
+ mnesia:write(#route{domain = LDomain,
+ pid = Pid})
+ end,
+ mnesia:transaction(F)
+ end.
register_route(Domain, LocalHint) ->
- Pid = self(),
- F = fun() ->
- mnesia:write(#route{domain = Domain,
- pid = Pid,
- local_hint = LocalHint})
- end,
- mnesia:transaction(F).
+ case jlib:nameprep(Domain) of
+ error ->
+ [] = {invalid_domain, Domain};
+ LDomain ->
+ Pid = self(),
+ F = fun() ->
+ mnesia:write(#route{domain = LDomain,
+ pid = Pid,
+ local_hint = LocalHint})
+ end,
+ mnesia:transaction(F)
+ end.
+
+register_routes(Domains) ->
+ lists:foreach(fun(Domain) ->
+ register_route(Domain)
+ end, Domains).
unregister_route(Domain) ->
- Pid = self(),
- F = fun() ->
- mnesia:delete_object(#route{domain = Domain,
- pid = Pid})
- end,
- mnesia:transaction(F).
+ case jlib:nameprep(Domain) of
+ error ->
+ [] = {invalid_domain, Domain};
+ LDomain ->
+ Pid = self(),
+ F = fun() ->
+ mnesia:delete_object(#route{domain = LDomain,
+ pid = Pid})
+ end,
+ mnesia:transaction(F)
+ end.
+
+unregister_routes(Domains) ->
+ lists:foreach(fun(Domain) ->
+ unregister_route(Domain)
+ end, Domains).
dirty_get_all_routes() ->
- lists:delete(?MYNAME, lists:usort(mnesia:dirty_all_keys(route))).
+ lists:usort(mnesia:dirty_all_keys(route)) -- ?MYHOSTS.
dirty_get_all_domains() ->
lists:usort(mnesia:dirty_all_keys(route)).