From 3a8203c366d46ec2937a601868f5e2ed591c923e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?louiz=E2=80=99?= Date: Wed, 12 Apr 2017 17:07:39 +0200 Subject: Handle the RSM "max" value in the MAM requests fix #3255 --- src/xmpp/biboumi_component.cpp | 10 +++++++++- tests/end_to_end/__main__.py | 12 ++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/xmpp/biboumi_component.cpp b/src/xmpp/biboumi_component.cpp index b4b6a45..8b2e541 100644 --- a/src/xmpp/biboumi_component.cpp +++ b/src/xmpp/biboumi_component.cpp @@ -619,7 +619,15 @@ bool BiboumiComponent::handle_mam_request(const Stanza& stanza) } } } - const auto lines = Database::get_muc_logs(from.bare(), iid.get_local(), iid.get_server(), -1, start, end); + const XmlNode* set = query->get_child("set", RSM_NS); + int limit = -1; + if (set) + { + const XmlNode* max = set->get_child("max", RSM_NS); + if (max) + limit = std::atoi(max->get_inner().data()); + } + const auto lines = Database::get_muc_logs(from.bare(), iid.get_local(), iid.get_server(), limit, start, end); for (const db::MucLogLine& line: lines) { if (!line.nick.value().empty()) diff --git a/tests/end_to_end/__main__.py b/tests/end_to_end/__main__.py index e9c9429..8acfe14 100644 --- a/tests/end_to_end/__main__.py +++ b/tests/end_to_end/__main__.py @@ -1626,6 +1626,18 @@ if __name__ == '__main__': partial(expect_stanza, "/iq[@type='result'][@id='id3'][@from='#foo%{irc_server_one}'][@to='{jid_one}/{resource_one}']"), + + # Retrieve a limited archive + partial(send_stanza, "1"), + + partial(expect_stanza, + ("/message/mam:result[@queryid='qid4']/forward:forwarded/delay:delay", + "/message/mam:result[@queryid='qid4']/forward:forwarded/client:message[@from='#foo%{irc_server_one}/{nick_one}'][@type='groupchat']/client:body[text()='coucou 2']") + ), + + partial(expect_stanza, + "/iq[@type='result'][@id='id4'][@from='#foo%{irc_server_one}'][@to='{jid_one}/{resource_one}']"), + ]), Scenario("mam_on_fixed_server", [ -- cgit v1.2.3