From 4ee8af633bc1d14059ae22a591e7c7db7098c6e4 Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Sat, 13 Aug 2016 00:07:27 +0200 Subject: [PATCH] Store announcements for offline users Add a hint to announcements (unless they are explicitly sent to online users). Without that hint, announcements weren't delivered to offline users, since they are sent as messages of type "headline". --- src/mod_announce.erl | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/mod_announce.erl b/src/mod_announce.erl index 52ff2de92..d74c46bf9 100644 --- a/src/mod_announce.erl +++ b/src/mod_announce.erl @@ -696,7 +696,7 @@ announce_all(From, To, Packet) -> lists:foreach( fun({User, Server}) -> Dest = jid:make(User, Server, <<>>), - ejabberd_router:route(Local, Dest, Packet) + ejabberd_router:route(Local, Dest, add_store_hint(Packet)) end, ejabberd_auth:get_vh_registered_users(Host)) end. @@ -713,7 +713,7 @@ announce_all_hosts_all(From, To, Packet) -> lists:foreach( fun({User, Server}) -> Dest = jid:make(User, Server, <<>>), - ejabberd_router:route(Local, Dest, Packet) + ejabberd_router:route(Local, Dest, add_store_hint(Packet)) end, ejabberd_auth:dirty_get_registered_users()) end. @@ -899,7 +899,7 @@ send_announcement_to_all(Host, SubjectS, BodyS) -> lists:foreach( fun({U, S, R}) -> Dest = jid:make(U, S, R), - ejabberd_router:route(Local, Dest, Packet) + ejabberd_router:route(Local, Dest, add_store_hint(Packet)) end, Sessions). -spec get_access(global | binary()) -> atom(). @@ -909,6 +909,12 @@ get_access(Host) -> fun(A) -> A end, none). +-spec add_store_hint(xmlel()) -> xmlel(). + +add_store_hint(El) -> + Hint = #xmlel{name = <<"store">>, attrs = [{<<"xmlns">>, ?NS_HINTS}]}, + fxml:append_subtags(El, [Hint]). + %%------------------------------------------------------------------------- export(LServer) -> Mod = gen_mod:db_mod(LServer, ?MODULE),