mirror of
https://github.com/processone/ejabberd.git
synced 2024-06-08 21:43:07 +02:00
mod_mam: Improve handling of forked messages
Make sure a message that was forked in ejabberd_sm will really only be tagged with a stanza ID if (another copy of) it was stored in MAM.
This commit is contained in:
parent
2b3890f1b0
commit
98419c6662
|
@ -755,12 +755,12 @@ may_enter_room(From, MUCState) ->
|
||||||
|
|
||||||
-spec store_msg(message(), binary(), binary(), jid(), send | recv)
|
-spec store_msg(message(), binary(), binary(), jid(), send | recv)
|
||||||
-> ok | pass | any().
|
-> ok | pass | any().
|
||||||
store_msg(#message{meta = #{sm_copy := true}}, _LUser, _LServer, _Peer, _Dir) ->
|
|
||||||
ok; % Already stored.
|
|
||||||
store_msg(Pkt, LUser, LServer, Peer, Dir) ->
|
store_msg(Pkt, LUser, LServer, Peer, Dir) ->
|
||||||
Prefs = get_prefs(LUser, LServer),
|
Prefs = get_prefs(LUser, LServer),
|
||||||
case should_archive_peer(LUser, LServer, Prefs, Peer) of
|
case {should_archive_peer(LUser, LServer, Prefs, Peer), Pkt} of
|
||||||
true ->
|
{true, #message{meta = #{sm_copy := true}}} ->
|
||||||
|
ok; % Already stored.
|
||||||
|
{true, _} ->
|
||||||
case ejabberd_hooks:run_fold(store_mam_message, LServer, Pkt,
|
case ejabberd_hooks:run_fold(store_mam_message, LServer, Pkt,
|
||||||
[LUser, LServer, Peer, chat, Dir]) of
|
[LUser, LServer, Peer, chat, Dir]) of
|
||||||
drop ->
|
drop ->
|
||||||
|
@ -772,7 +772,7 @@ store_msg(Pkt, LUser, LServer, Peer, Dir) ->
|
||||||
Mod = gen_mod:db_mod(LServer, ?MODULE),
|
Mod = gen_mod:db_mod(LServer, ?MODULE),
|
||||||
Mod:store(El, LServer, US, chat, Peer, <<"">>, Dir, ID)
|
Mod:store(El, LServer, US, chat, Peer, <<"">>, Dir, ID)
|
||||||
end;
|
end;
|
||||||
false ->
|
{false, _} ->
|
||||||
pass
|
pass
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user