Store announcements for offline users
Add a <store/> 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".
This commit is contained in:
parent
bf9d6b5534
commit
4ee8af633b
|
@ -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),
|
||||
|
|
Loading…
Reference in New Issue