Comparison

plugins/mod_s2s.lua @ 11707:61759372be26

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.
author Kim Alvefur <zash@zash.se>
date Sun, 18 Jul 2021 21:53:26 +0200
parent 11705:7132acfd287e
child 11740:b92f2abe0bda
comparison
equal deleted inserted replaced
11706:56feb0cf7052 11707:61759372be26
89 default_port = 5269; 89 default_port = 5269;
90 use_ipv4 = module:get_option_boolean("use_ipv4", true); 90 use_ipv4 = module:get_option_boolean("use_ipv4", true);
91 use_ipv6 = module:get_option_boolean("use_ipv6", true); 91 use_ipv6 = module:get_option_boolean("use_ipv6", true);
92 use_dane = module:get_option_boolean("use_dane", false); 92 use_dane = module:get_option_boolean("use_dane", false);
93 }; 93 };
94 local s2s_service_options_mt = { __index = s2s_service_options }
94 95
95 module:hook("stats-update", function () 96 module:hook("stats-update", function ()
96 measure_connections_inbound:clear() 97 measure_connections_inbound:clear()
97 measure_connections_outbound:clear() 98 measure_connections_outbound:clear()
98 -- TODO: init all expected metrics once? 99 -- TODO: init all expected metrics once?
212 213
213 -- Store in buffer 214 -- Store in buffer
214 host_session.bounce_sendq = bounce_sendq; 215 host_session.bounce_sendq = bounce_sendq;
215 host_session.sendq = { {tostring(stanza), stanza.attr.type ~= "error" and stanza.attr.type ~= "result" and st.reply(stanza)} }; 216 host_session.sendq = { {tostring(stanza), stanza.attr.type ~= "error" and stanza.attr.type ~= "result" and st.reply(stanza)} };
216 log("debug", "stanza [%s] queued until connection complete", stanza.name); 217 log("debug", "stanza [%s] queued until connection complete", stanza.name);
217 connect(service.new(to_host, "xmpp-server", "tcp", s2s_service_options), listener, nil, { session = host_session }); 218 -- FIXME Cleaner solution to passing extra data from resolvers to net.server
219 -- This mt-clone allows resolvers to add extra data, currently used for DANE TLSA records
220 local extra = setmetatable({}, s2s_service_options_mt);
221 connect(service.new(to_host, "xmpp-server", "tcp", extra), listener, nil, { session = host_session });
218 m_initiated_connections:with_labels(from_host):add(1) 222 m_initiated_connections:with_labels(from_host):add(1)
219 return true; 223 return true;
220 end 224 end
221 225
222 local function keepalive(event) 226 local function keepalive(event)