mod_pubsub,mod_pep: Advertise maximum number of items via XEP-0122
authorKim Alvefur <zash@zash.se>
Wed, 20 Oct 2021 17:32:34 +0200
changeset 11860 14a679588b7b
parent 11859 8890eaa69446
child 11861 e080d6aa0b3b
mod_pubsub,mod_pep: Advertise maximum number of items via XEP-0122 Clients would generally be using the "max" symbol instead of discovering this, but this also gets us validation and earlier rejection of out of bounds values.
plugins/mod_pep.lua
plugins/mod_pubsub/mod_pubsub.lua
spec/scansion/pubsub_config.scs
spec/scansion/pubsub_max_items.scs
spec/scansion/pubsub_multi_items.scs
spec/scansion/pubsub_preconditions.scs
--- a/plugins/mod_pep.lua	Wed Oct 20 17:31:24 2021 +0200
+++ b/plugins/mod_pep.lua	Wed Oct 20 17:32:34 2021 +0200
@@ -41,6 +41,13 @@
 	return tonumber(n);
 end
 
+for _, field in ipairs(lib_pubsub.node_config_form) do
+	if field.var == "pubsub#max_items" then
+		field.range_max = max_max_items;
+		break;
+	end
+end
+
 function module.save()
 	return {
 		services = services;
--- a/plugins/mod_pubsub/mod_pubsub.lua	Wed Oct 20 17:31:24 2021 +0200
+++ b/plugins/mod_pubsub/mod_pubsub.lua	Wed Oct 20 17:32:34 2021 +0200
@@ -48,6 +48,13 @@
 	return tonumber(n);
 end
 
+for _, field in ipairs(lib_pubsub.node_config_form) do
+	if field.var == "pubsub#max_items" then
+		field.range_max = max_max_items;
+		break;
+	end
+end
+
 local node_store = module:open_store(module.name.."_nodes");
 
 local function create_simple_itemstore(node_config, node_name) --> util.cache like object
--- a/spec/scansion/pubsub_config.scs	Wed Oct 20 17:31:24 2021 +0200
+++ b/spec/scansion/pubsub_config.scs	Wed Oct 20 17:32:34 2021 +0200
@@ -49,7 +49,7 @@
 					<field var="pubsub#type" label="The type of node data, usually specified by the namespace of the payload (if any)" type="text-single"/>
 					<field var="pubsub#max_items" label="Max # of items to persist" type="text-single">
 						<validate xmlns="http://jabber.org/protocol/xdata-validate" datatype="pubsub:integer-or-max">
-							<range min="1"/>
+							<range min="1" max="256"/>
 						</validate>
 						<value>1</value>
 					</field>
@@ -139,7 +139,7 @@
 					<field var="pubsub#type" type="text-single" label="The type of node data, usually specified by the namespace of the payload (if any)"/>
 					<field var="pubsub#max_items" type="text-single" label="Max # of items to persist">
 						<validate xmlns="http://jabber.org/protocol/xdata-validate" datatype="pubsub:integer-or-max">
-							<range min="1"/>
+							<range min="1" max="256"/>
 						</validate>
 						<value>1</value>
 					</field>
--- a/spec/scansion/pubsub_max_items.scs	Wed Oct 20 17:31:24 2021 +0200
+++ b/spec/scansion/pubsub_max_items.scs	Wed Oct 20 17:32:34 2021 +0200
@@ -44,7 +44,7 @@
 		<field var="pubsub#type" label="The type of node data, usually specified by the namespace of the payload (if any)" type="text-single"/>
 		<field var="pubsub#max_items" label="Max # of items to persist" type="text-single">
 			<validate xmlns="http://jabber.org/protocol/xdata-validate" datatype="pubsub:integer-or-max">
-				<range min="1"/>
+				<range min="1" max="256"/>
 			</validate>
 		  <value>20</value>
 		</field>
--- a/spec/scansion/pubsub_multi_items.scs	Wed Oct 20 17:31:24 2021 +0200
+++ b/spec/scansion/pubsub_multi_items.scs	Wed Oct 20 17:32:34 2021 +0200
@@ -44,7 +44,7 @@
 		<field var="pubsub#type" label="The type of node data, usually specified by the namespace of the payload (if any)" type="text-single"/>
 		<field var="pubsub#max_items" label="Max # of items to persist" type="text-single">
 			<validate xmlns="http://jabber.org/protocol/xdata-validate" datatype="pubsub:integer-or-max">
-				<range min="1"/>
+				<range min="1" max="256"/>
 			</validate>
 		  <value>20</value>
 		</field>
--- a/spec/scansion/pubsub_preconditions.scs	Wed Oct 20 17:31:24 2021 +0200
+++ b/spec/scansion/pubsub_preconditions.scs	Wed Oct 20 17:32:34 2021 +0200
@@ -48,7 +48,7 @@
 					<field var="pubsub#type" label="The type of node data, usually specified by the namespace of the payload (if any)" type="text-single"/>
 					<field var="pubsub#max_items" label="Max # of items to persist" type="text-single">
 						<validate xmlns="http://jabber.org/protocol/xdata-validate" datatype="pubsub:integer-or-max">
-							<range min="1"/>
+							<range min="1" max="256"/>
 						</validate>
 						<value>1</value>
 					</field>
@@ -138,7 +138,7 @@
 					<field var="pubsub#type" type="text-single" label="The type of node data, usually specified by the namespace of the payload (if any)"/>
 					<field var="pubsub#max_items" type="text-single" label="Max # of items to persist">
 						<validate xmlns="http://jabber.org/protocol/xdata-validate" datatype="pubsub:integer-or-max">
-							<range min="1"/>
+							<range min="1" max="256"/>
 						</validate>
 						<value>1</value>
 					</field>