summaryrefslogtreecommitdiff
path: root/src/ejabberd_piefxis.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-02-16 11:00:26 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-02-16 11:10:24 +0300
commit8b2d3084986defd6045a0c02706415e0e7ae4b3f (patch)
tree419b64fc2d07646d221fdfa2f526e057fb34c6d2 /src/ejabberd_piefxis.erl
parentMerge branch 'master' of github.com:processone/ejabberd (diff)
Change routing API
Now 'From' and 'To' arguments must be omitted in functions and structures related to routing. The commit deprecates the following functions: ejabberd_router:route/3 in favor of ejabberd_router:route/1 ejabberd_router:route_error/4 in favor of ejabberd_router:route_error/2 ejabberd_local:route_iq/4 in favor of ejabberd_local:route_iq/2 ejabberd_local:route_iq/5 in favor of ejabberd_local:route_iq/3 The format of {route, From, To, Packet} is changed in favor of {route, Packet}
Diffstat (limited to 'src/ejabberd_piefxis.erl')
-rw-r--r--src/ejabberd_piefxis.erl21
1 files changed, 8 insertions, 13 deletions
diff --git a/src/ejabberd_piefxis.erl b/src/ejabberd_piefxis.erl
index 530f7bfb..0e89490a 100644
--- a/src/ejabberd_piefxis.erl
+++ b/src/ejabberd_piefxis.erl
@@ -524,24 +524,19 @@ process_vcard(El, State = #state{user = U, server = S}) ->
process_offline_msg(#message{from = undefined}, _State) ->
stop("No 'from' attribute found", []);
process_offline_msg(Msg, State = #state{user = U, server = S}) ->
- From = xmpp:get_from(Msg),
- To = jid:make(U, S, <<>>),
- NewMsg = xmpp:set_from_to(Msg, From, To),
- case catch mod_offline:store_packet(pass, From, To, NewMsg) of
- {'EXIT', _} = Err ->
- stop("Failed to store offline message: ~p", [Err]);
- _ ->
- {ok, State}
- end.
+ To = jid:make(U, S),
+ ejabberd_hooks:run_fold(
+ offline_message_hook, To#jid.lserver, pass,
+ [xmpp:set_to(Msg, To)]),
+ {ok, State}.
-spec process_presence(presence(), state()) -> {ok, state()} | {error, _}.
process_presence(#presence{from = undefined}, _State) ->
stop("No 'from' attribute found", []);
process_presence(Pres, #state{user = U, server = S} = State) ->
- From = xmpp:get_from(Pres),
- To = jid:make(U, S, <<>>),
- NewPres = xmpp:set_from_to(Pres, From, To),
- ejabberd_router:route(From, To, NewPres),
+ To = jid:make(U, S),
+ NewPres = xmpp:set_to(Pres, To),
+ ejabberd_router:route(NewPres),
{ok, State}.
stop(Fmt, Args) ->