Infinite loop when MUC MAM doesn't contain `complete` attribute on <fin/> element (#269)
wojciech.kapcia@tigase.net opened 4 years ago

OpenFire lacks it on their MUC: openfire@conference.igniterealtime.org and Beagle is getting stuck querying MAM constantly:

<!--   2020-08-14T17:15:42Z   <<<<   -->
<iq to='wojtek@tigase.org/1505915227-tigase-19' from='openfire@conference.igniterealtime.org' id='1B867B69-40BE-4EDA-A68A-D6CFA7E0F99E' type='result' xmlns='jabber:client'>
<fin queryid='B60B9A76-9E13-4C43-8D0D-B30E15C807E3' xmlns='urn:xmpp:mam:2'>
<set xmlns='http://jabber.org/protocol/rsm'>
<count>0</count>
</set>
</fin>
</iq>

<!--   2020-08-14T17:15:42Z   >>>>   -->
<iq to='openfire@conference.igniterealtime.org' type='set' id='B1730F4B-95E3-4E9F-828E-9466EAD476E3'>
<query xmlns='urn:xmpp:mam:2' queryid='3A789767-E601-4F48-B5CD-0C5CF62C6D02'>
<x type='submit' xmlns='jabber:x:data'>
<field var='FORM_TYPE' type='hidden'>
<value>urn:xmpp:mam:2</value>
</field>
<field var='start' type='text-single'>
<value>2020-07-30T20:51:10Z</value>
</field>
<field var='end' type='text-single'>
<value>2020-08-04T16:07:34Z</value>
</field>
</x>
<set xmlns='http://jabber.org/protocol/rsm'>
<max>150</max>
</set>
</query>
</iq>

https://xmpp.org/extensions/xep-0313.html#query-paging-request

When the results returned by the server are complete (that is: when they have not been limited by the maximum size of the result page (either as specified or enforced by the server)), the server MUST include a 'complete' attribute on the element, with a value of 'true'; this informs the client that it doesn't need to perform further paging to retreive the requested data. If it is not the last page of the result set, the server MUST either omit the 'complete' attribute, or give it a value of 'false'.

Ref: https://issues.igniterealtime.org/browse/OF-2063

Andrzej Wójcik (Tigase) commented 4 years ago

The issue was fixed in the TigaseSwift, if count returned by <rsm/> is 0 then complete is being set to true even if it was missing.

issue 1 of 1
Please wait...
Page is in error, reload to recover