From fa25e086f490c84f0aaca3bc2ad125f402add6b0 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Sun, 18 Jul 2021 21:53:26 +0200 Subject: mod_s2s: Clone 'extra' data to let resolvers add more to it This way 'extra' is unique for each connect() instance, making it safer to mutate it, while inheriting the global settings. See 926d53af9a7a for some more context. --- plugins/mod_s2s.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'plugins') diff --git a/plugins/mod_s2s.lua b/plugins/mod_s2s.lua index 67adc0e0..1e0fb955 100644 --- a/plugins/mod_s2s.lua +++ b/plugins/mod_s2s.lua @@ -91,6 +91,7 @@ local s2s_service_options = { use_ipv6 = module:get_option_boolean("use_ipv6", true); use_dane = module:get_option_boolean("use_dane", false); }; +local s2s_service_options_mt = { __index = s2s_service_options } module:hook("stats-update", function () measure_connections_inbound:clear() @@ -214,7 +215,10 @@ function route_to_new_session(event) host_session.bounce_sendq = bounce_sendq; host_session.sendq = { {tostring(stanza), stanza.attr.type ~= "error" and stanza.attr.type ~= "result" and st.reply(stanza)} }; log("debug", "stanza [%s] queued until connection complete", stanza.name); - connect(service.new(to_host, "xmpp-server", "tcp", s2s_service_options), listener, nil, { session = host_session }); + -- FIXME Cleaner solution to passing extra data from resolvers to net.server + -- This mt-clone allows resolvers to add extra data, currently used for DANE TLSA records + local extra = setmetatable({}, s2s_service_options_mt); + connect(service.new(to_host, "xmpp-server", "tcp", extra), listener, nil, { session = host_session }); m_initiated_connections:with_labels(from_host):add(1) return true; end -- cgit v1.2.3