Diff

plugins/mod_tls.lua @ 12207:65e252940337

mod_s2s: Retrieve TLS context for outgoing Direct TLS connections from mod_tls So that the same TLS context is used for both Direct TLS and starttls, since they are supposed to be functionally identical apart from the few extra round trips. A new event is added because the 's2s-created' event fires much later, after a connection has already been established, where we need the TLS context before that.
author Kim Alvefur <zash@zash.se>
date Fri, 21 Jan 2022 18:42:38 +0100
parent 11766:6ad335cd43f9
child 12211:5c2ae28f536e
line wrap: on
line diff
--- a/plugins/mod_tls.lua	Fri Jan 21 17:59:19 2022 +0100
+++ b/plugins/mod_tls.lua	Fri Jan 21 18:42:38 2022 +0100
@@ -79,7 +79,7 @@
 module:hook_global("config-reloaded", module.load);
 
 local function can_do_tls(session)
-	if not session.conn.starttls then
+	if session.conn and not session.conn.starttls then
 		if not session.secure then
 			session.log("debug", "Underlying connection does not support STARTTLS");
 		end
@@ -116,6 +116,11 @@
 	return session.ssl_ctx;
 end
 
+module:hook("s2sout-created", function (event)
+	-- Initialize TLS context for outgoing connections
+	can_do_tls(event.session);
+end);
+
 -- Hook <starttls/>
 module:hook("stanza/urn:ietf:params:xml:ns:xmpp-tls:starttls", function(event)
 	local origin = event.origin;