# HG changeset patch
# User Kim Alvefur <zash@zash.se>
# Date 1668017416 -3600
# Node ID ccc0bdad82ccbb0c75b2c064867e205d47520b6d
# Parent  871d2c95b40351d58a53a21279b59d2873edb63a
mod_s2s: Retrieve stanza size limit from peer for bidi connections

Having mod_s2s know about the bidi namespace is perhaps a bit awkward
but putting this in mod_s2s_bidi would be more awkward as it has nothing
to do with limits.  Some indirection event could be added in the future.

diff -r 871d2c95b403 -r ccc0bdad82cc plugins/mod_s2s.lua
--- a/plugins/mod_s2s.lua	Thu Oct 20 14:22:36 2022 +0200
+++ b/plugins/mod_s2s.lua	Wed Nov 09 19:10:16 2022 +0100
@@ -253,6 +253,13 @@
 				:text_tag("max-size", string.format("%d", stanza_size_limit)):up();
 		end
 	end);
+	module:hook_tag("urn:xmpp:bidi", "bidi", function(session, stanza)
+		-- Advertising features on bidi connections where no <stream:features> is sent in the other direction
+		local limits = stanza:get_child("limits", "urn:xmpp:stream-limits:0");
+		if limits then
+			session.outgoing_stanza_size_limit = tonumber(limits:get_child_text("max-size"));
+		end
+	end, 100);
 	module:hook("s2s-authenticated", make_authenticated, -1);
 	module:hook("s2s-read-timeout", keepalive, -1);
 	module:hook_stanza("http://etherx.jabber.org/streams", "features", function (session, stanza) -- luacheck: ignore 212/stanza