From db04cdf2ca7eea42024b4cc7bae5e9bea4f4e5e8 Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Thu, 14 Jan 2016 02:27:02 +0100 Subject: [PATCH] mod_mam: Sort messages returned by Mnesia Sort the messages retrieved from an Mnesia archive before selecting the subset limited by the value. This makes sure the desired subset of messages is sent to the client. --- src/mod_mam.erl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mod_mam.erl b/src/mod_mam.erl index 6bc8c0c01..c20a941df 100644 --- a/src/mod_mam.erl +++ b/src/mod_mam.erl @@ -898,7 +898,8 @@ select(_LServer, #jid{luser = LUser, lserver = LServer} = JidRequestor, Start, End, With, RSM, MsgType, mnesia) -> MS = make_matchspec(LUser, LServer, Start, End, With), Msgs = mnesia:dirty_select(archive_msg, MS), - {FilteredMsgs, IsComplete} = filter_by_rsm(Msgs, RSM), + SortedMsgs = lists:keysort(#archive_msg.timestamp, Msgs), + {FilteredMsgs, IsComplete} = filter_by_rsm(SortedMsgs, RSM), Count = length(Msgs), {lists:map( fun(Msg) -> -- 2.40.0