Mercurial > prosody-hg
view plugins/mod_s2s_bidi.lua @ 14024:f65302ea37b0 13.0 13.0.3
mod_limits: Allow configuration of general 's2s' limit, and have s2sout inherit from s2sin
Most people don't currently have a limit set for s2sout, as usually such
sessions don't have significant incoming traffic. However, having limits in
place is still sensible, especially with the rising use of bidi.
The goal here is to switch people to a general 's2s' limit, which s2sin and
s2sout both inherit from. Due to the widespread existence of 's2sin' in
existing configurations, s2sout will inherit from that unless explicitly set.
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Mon, 05 Jan 2026 11:35:32 +0000 |
| parents | f14066ee3239 |
| children |
line wrap: on
line source
-- Prosody IM -- Copyright (C) 2019 Kim Alvefur -- -- This project is MIT/X11 licensed. Please see the -- COPYING file in the source package for more information. -- local st = require "prosody.util.stanza"; local xmlns_bidi_feature = "urn:xmpp:features:bidi" local xmlns_bidi = "urn:xmpp:bidi"; local require_encryption = module:get_option_boolean("s2s_require_encryption", true); local offers_sent = module:metric("counter", "offers_sent", "", "Bidirectional connection offers sent", {}); local offers_recv = module:metric("counter", "offers_recv", "", "Bidirectional connection offers received", {}); local offers_taken = module:metric("counter", "offers_taken", "", "Bidirectional connection offers taken", {}); module:hook("s2s-stream-features", function(event) local origin, features = event.origin, event.features; if origin.type == "s2sin_unauthed" and (not require_encryption or origin.secure) then features:tag("bidi", { xmlns = xmlns_bidi_feature }):up(); offers_sent:with_labels():add(1); end end); module:hook_tag("http://etherx.jabber.org/streams", "features", function (session, stanza) if session.type == "s2sout_unauthed" and (not require_encryption or session.secure) then local bidi = stanza:get_child("bidi", xmlns_bidi_feature); if bidi then session.incoming = true; session.log("debug", "Requesting bidirectional stream"); local request_bidi = st.stanza("bidi", { xmlns = xmlns_bidi }); module:fire_event("s2sout-stream-features", { origin = session, features = request_bidi }); session.sends2s(request_bidi); offers_taken:with_labels():add(1); end end end, 200); module:hook_tag("urn:xmpp:bidi", "bidi", function(session) if session.type == "s2sin_unauthed" and (not require_encryption or session.secure) then session.log("debug", "Requested bidirectional stream"); session.outgoing = true; offers_recv:with_labels():add(1); return true; end end);
