From c880dee2af4b1f5e184c3a3c7f70036694d9c1f8 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Wed, 9 Jun 2021 15:58:49 +0200 Subject: mod_pubsub,mod_pep: Support "max" as 'pubsub#max_items' Fixes #1643 API change: The argument to archive_itemstore() changes type to integer --- plugins/mod_pep.lua | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'plugins/mod_pep.lua') diff --git a/plugins/mod_pep.lua b/plugins/mod_pep.lua index da74639e..f9e2f808 100644 --- a/plugins/mod_pep.lua +++ b/plugins/mod_pep.lua @@ -35,6 +35,13 @@ local known_nodes = module:open_store("pep"); local max_max_items = module:get_option_number("pep_max_items", 256); +local function tonumber_max_items(n) + if n == "max" then + return max_max_items; + end + return tonumber(n); +end + function module.save() return { services = services; @@ -56,7 +63,7 @@ function is_item_stanza(item) end function check_node_config(node, actor, new_config) -- luacheck: ignore 212/node 212/actor - if (new_config["max_items"] or 1) > max_max_items then + if (tonumber_max_items(new_config["max_items"]) or 1) > max_max_items then return false; end if new_config["access_model"] ~= "presence" @@ -102,13 +109,14 @@ end local function simple_itemstore(username) local driver = storagemanager.get_driver(module.host, "pep_data"); return function (config, node) + local max_items = tonumber_max_items(config["max_items"]); if config["persist_items"] then module:log("debug", "Creating new persistent item store for user %s, node %q", username, node); local archive = driver:open("pep_"..node, "archive"); - return lib_pubsub.archive_itemstore(archive, config, username, node, false); + return lib_pubsub.archive_itemstore(archive, max_items, username, node, false); else module:log("debug", "Creating new ephemeral item store for user %s, node %q", username, node); - return cache.new(tonumber(config["max_items"])); + return cache.new(max_items); end end end -- cgit v1.2.3