diff options
author | Paweł Chmielowski <pchmielowski@process-one.net> | 2019-04-29 16:32:19 +0200 |
---|---|---|
committer | Paweł Chmielowski <pchmielowski@process-one.net> | 2019-04-29 16:32:19 +0200 |
commit | aaf674160bf4c4b08e4b94f7bb3539c1031f5a53 (patch) | |
tree | 510ed61340abe879d2c85557c47bc7a009e513e1 | |
parent | Return correct value from count_offline_messages with mam storage option (diff) |
Sort messages by stanza_id when using mam storage in mod_offline
-rw-r--r-- | src/mod_offline.erl | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/src/mod_offline.erl b/src/mod_offline.erl index 94a64d83a..2906b2717 100644 --- a/src/mod_offline.erl +++ b/src/mod_offline.erl @@ -811,12 +811,27 @@ read_mam_messages(LUser, LServer, ReadMsgs) -> end, AllMsgs2 = lists:sort( fun(A, B) -> - case {xmpp:get_subtag(A, #delay{}), xmpp:get_subtag(B, #delay{})} of - {#delay{stamp = TA}, #delay{stamp = TB}} -> - TA < TB; - _ -> - true - end + DA = case xmpp:get_subtag(A, #stanza_id{}) of + #stanza_id{id = IDA} -> + IDA; + _ -> case xmpp:get_subtag(A, #delay{}) of + #delay{stamp = STA} -> + integer_to_binary(misc:now_to_usec(STA)); + _ -> + <<"unknown">> + end + end, + DB = case xmpp:get_subtag(B, #stanza_id{}) of + #stanza_id{id = IDB} -> + IDB; + _ -> case xmpp:get_subtag(B, #delay{}) of + #delay{stamp = STB} -> + integer_to_binary(misc:now_to_usec(STB)); + _ -> + <<"unknown">> + end + end, + DA < DB end, AllMsgs), {AllMsgs3, _} = lists:mapfoldl( fun(Msg, Counter) -> |