diff options
Diffstat (limited to 'src/ejabberd_piefxis.erl')
-rw-r--r-- | src/ejabberd_piefxis.erl | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/src/ejabberd_piefxis.erl b/src/ejabberd_piefxis.erl index 530f7bfb8..0e89490ab 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) -> |