mod_c2s, mod_s2s, mod_component, mod_bosh, mod_websockets: Set default stanza size limits 0.11
authorMatthew Wild <mwild1@gmail.com>
Fri, 07 May 2021 17:03:49 +0100
branch0.11
changeset 11544 1937b3c3efb5
parent 11543 3413fea9e6db
child 11545 13b84682518e
mod_c2s, mod_s2s, mod_component, mod_bosh, mod_websockets: Set default stanza size limits c2s/bosh/ws streams will default to 256KB, s2s and components to 512KB. These values are aligned with ejabberd's default settings, which should reduce issues related to inconsistent size limits between servers on the XMPP network. The previous default (10MB) is excessive for any production server, and allows significant memory usage by even unauthenticated sessions.
plugins/mod_bosh.lua
plugins/mod_c2s.lua
plugins/mod_component.lua
plugins/mod_s2s/mod_s2s.lua
plugins/mod_websocket.lua
--- a/plugins/mod_bosh.lua	Fri May 07 16:41:39 2021 +0100
+++ b/plugins/mod_bosh.lua	Fri May 07 17:03:49 2021 +0100
@@ -45,6 +45,7 @@
 
 local consider_bosh_secure = module:get_option_boolean("consider_bosh_secure");
 local cross_domain = module:get_option("cross_domain_bosh", false);
+local stanza_size_limit = module:get_option_number("c2s_stanza_size_limit", 1024*256);
 
 if cross_domain == true then cross_domain = "*"; end
 if type(cross_domain) == "table" then cross_domain = table.concat(cross_domain, ", "); end
@@ -115,7 +116,7 @@
 	local body = request.body;
 
 	local context = { request = request, response = response, notopen = true };
-	local stream = new_xmpp_stream(context, stream_callbacks);
+	local stream = new_xmpp_stream(context, stream_callbacks, stanza_size_limit);
 	response.context = context;
 
 	local headers = response.headers;
--- a/plugins/mod_c2s.lua	Fri May 07 16:41:39 2021 +0100
+++ b/plugins/mod_c2s.lua	Fri May 07 17:03:49 2021 +0100
@@ -26,7 +26,7 @@
 local c2s_timeout = module:get_option_number("c2s_timeout", 300);
 local stream_close_timeout = module:get_option_number("c2s_close_timeout", 5);
 local opt_keepalives = module:get_option_boolean("c2s_tcp_keepalives", module:get_option_boolean("tcp_keepalives", true));
-local stanza_size_limit = module:get_option_number("c2s_stanza_size_limit"); -- TODO come up with a sensible default (util.xmppstream defaults to 10M)
+local stanza_size_limit = module:get_option_number("c2s_stanza_size_limit", 1024*256);
 
 local measure_connections = module:measure("connections", "amount");
 local measure_ipv6 = module:measure("ipv6", "amount");
--- a/plugins/mod_component.lua	Fri May 07 16:41:39 2021 +0100
+++ b/plugins/mod_component.lua	Fri May 07 17:03:49 2021 +0100
@@ -27,6 +27,7 @@
 local log = module._log;
 
 local opt_keepalives = module:get_option_boolean("component_tcp_keepalives", module:get_option_boolean("tcp_keepalives", true));
+local stanza_size_limit = module:get_option_number("component_stanza_size_limit", module:get_option_number("s2s_stanza_size_limit", 1024*512));
 
 local sessions = module:shared("sessions");
 
@@ -297,7 +298,7 @@
 
 	session.log("info", "Incoming Jabber component connection");
 
-	local stream = new_xmpp_stream(session, stream_callbacks);
+	local stream = new_xmpp_stream(session, stream_callbacks, stanza_size_limit);
 	session.stream = stream;
 
 	session.notopen = true;
--- a/plugins/mod_s2s/mod_s2s.lua	Fri May 07 16:41:39 2021 +0100
+++ b/plugins/mod_s2s/mod_s2s.lua	Fri May 07 17:03:49 2021 +0100
@@ -37,7 +37,7 @@
 local secure_domains, insecure_domains =
 	module:get_option_set("s2s_secure_domains", {})._items, module:get_option_set("s2s_insecure_domains", {})._items;
 local require_encryption = module:get_option_boolean("s2s_require_encryption", false);
-local stanza_size_limit = module:get_option_number("s2s_stanza_size_limit"); -- TODO come up with a sensible default (util.xmppstream defaults to 10M)
+local stanza_size_limit = module:get_option_number("s2s_stanza_size_limit", 1024*512);
 
 local measure_connections = module:measure("connections", "amount");
 local measure_ipv6 = module:measure("ipv6", "amount");
--- a/plugins/mod_websocket.lua	Fri May 07 16:41:39 2021 +0100
+++ b/plugins/mod_websocket.lua	Fri May 07 17:03:49 2021 +0100
@@ -28,7 +28,7 @@
 
 local t_concat = table.concat;
 
-local stanza_size_limit = module:get_option_number("c2s_stanza_size_limit", 10 * 1024 * 1024);
+local stanza_size_limit = module:get_option_number("c2s_stanza_size_limit", 1024 * 256);
 local frame_buffer_limit = module:get_option_number("websocket_frame_buffer_limit", 2 * stanza_size_limit);
 local frame_fragment_limit = module:get_option_number("websocket_frame_fragment_limit", 8);
 local stream_close_timeout = module:get_option_number("c2s_close_timeout", 5);