]> granicus.if.org Git - ejabberd/commitdiff
mod_mam: Always limit result set page size
authorHolger Weiss <holger@zedat.fu-berlin.de>
Tue, 19 Jul 2016 19:08:13 +0000 (21:08 +0200)
committerHolger Weiss <holger@zedat.fu-berlin.de>
Tue, 19 Jul 2016 19:08:13 +0000 (21:08 +0200)
Limit the number of messages returned for a given MAM request even if
the client didn't specify an RSM set (not just if the client specified
an RSM set without a limit).

This is still not done for MAM v0.2 requests though, as that version of
the XEP doesn't require clients to support RSM.

src/mod_mam.erl

index 10eb098da3f3fa32562da425529bb4eba3a604cc..f5dc67abc50927e34546e0b9f2a88c7cbbcf6893 100644 (file)
@@ -1032,12 +1032,12 @@ filter_by_max(_Msgs, _Junk) ->
 
 limit_max(RSM, ?NS_MAM_TMP) ->
     RSM; % XEP-0313 v0.2 doesn't require clients to support RSM.
+limit_max(none, _NS) ->
+    #rsm_in{max = ?DEF_PAGE_SIZE};
 limit_max(#rsm_in{max = Max} = RSM, _NS) when not is_integer(Max) ->
     RSM#rsm_in{max = ?DEF_PAGE_SIZE};
 limit_max(#rsm_in{max = Max} = RSM, _NS) when Max > ?MAX_PAGE_SIZE ->
-    RSM#rsm_in{max = ?MAX_PAGE_SIZE};
-limit_max(RSM, _NS) ->
-    RSM.
+    RSM#rsm_in{max = ?MAX_PAGE_SIZE}.
 
 match_interval(Now, Start, End) ->
     (Now >= Start) and (Now =< End).