summaryrefslogtreecommitdiff
path: root/src/ejabberd_sm.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-01-09 17:02:17 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-01-09 17:02:17 +0300
commit1e55e018e534aa82541c5f460063a237192b768c (patch)
tree9584ed46fe2b18770343399254b0ba15ff591e51 /src/ejabberd_sm.erl
parentGet rid of "jlib.hrl" header in some files (diff)
Adopt remaining code to support new hooks
Diffstat (limited to 'src/ejabberd_sm.erl')
-rw-r--r--src/ejabberd_sm.erl37
1 files changed, 13 insertions, 24 deletions
diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl
index a15d788d..38b7ed15 100644
--- a/src/ejabberd_sm.erl
+++ b/src/ejabberd_sm.erl
@@ -83,7 +83,6 @@
-include("xmpp.hrl").
-include("ejabberd_commands.hrl").
--include("mod_privacy.hrl").
-include("ejabberd_sm.hrl").
-callback init() -> ok | {error, any()}.
@@ -576,24 +575,10 @@ do_route(From, To, Packet) ->
%% or if there are no current sessions for the user.
-spec is_privacy_allow(jid(), jid(), stanza()) -> boolean().
is_privacy_allow(From, To, Packet) ->
- User = To#jid.user,
- Server = To#jid.server,
- PrivacyList =
- ejabberd_hooks:run_fold(privacy_get_user_list, Server,
- #userlist{}, [User, Server]),
- is_privacy_allow(From, To, Packet, PrivacyList).
-
-%% Check if privacy rules allow this delivery
-%% Function copied from ejabberd_c2s.erl
--spec is_privacy_allow(jid(), jid(), stanza(), #userlist{}) -> boolean().
-is_privacy_allow(From, To, Packet, PrivacyList) ->
- User = To#jid.user,
- Server = To#jid.server,
- allow ==
- ejabberd_hooks:run_fold(privacy_check_packet, Server,
- allow,
- [User, Server, PrivacyList, {From, To, Packet},
- in]).
+ LServer = To#jid.server,
+ allow == ejabberd_hooks:run_fold(
+ privacy_check_packet, LServer, allow,
+ [To, xmpp:set_from_to(Packet, From, To), in]).
-spec route_message(jid(), jid(), message(), message_type()) -> any().
route_message(From, To, Packet, Type) ->
@@ -757,10 +742,14 @@ process_iq(From, To, #iq{type = T, lang = Lang, sub_els = [El]} = Packet)
Err = xmpp:err_service_unavailable(Txt, Lang),
ejabberd_router:route_error(To, From, Packet, Err)
end;
-process_iq(From, To, #iq{type = T} = Packet) when T == get; T == set ->
- Err = xmpp:err_bad_request(),
- ejabberd_router:route_error(To, From, Packet, Err),
- ok;
+process_iq(From, To, #iq{type = T, lang = Lang, sub_els = SubEls} = Packet)
+ when T == get; T == set ->
+ Txt = case SubEls of
+ [] -> <<"No child elements found">>;
+ _ -> <<"Too many child elements">>
+ end,
+ Err = xmpp:err_bad_request(Txt, Lang),
+ ejabberd_router:route_error(To, From, Packet, Err);
process_iq(_From, _To, #iq{}) ->
ok.
@@ -770,7 +759,7 @@ force_update_presence({LUser, LServer}) ->
Mod = get_sm_backend(LServer),
Ss = online(Mod:get_sessions(LUser, LServer)),
lists:foreach(fun (#session{sid = {_, Pid}}) ->
- Pid ! {force_update_presence, LUser, LServer}
+ Pid ! force_update_presence
end,
Ss).