# HG changeset patch
# User Kim Alvefur <zash@zash.se>
# Date 1643113226 -3600
# Node ID 5c2ae28f536ea1cc34c558c71af59b859f36f886
# Parent  3fe2e5da05c3484c5fba053d3efa3e55692e543e
mod_tls: Set ALPN on outgoing connections

Relevant and sometimes needed for Direct TLS which mod_s2s uses this
context for. Primarily when e.g. mod_net_multiplex or equivalent ALPN
based dispatch is used.

All these contexts should likely move away from mod_tls and into either
mod_s2s or portmanager. The later already duplicates some of this work.

diff -r 3fe2e5da05c3 -r 5c2ae28f536e plugins/mod_tls.lua
--- a/plugins/mod_tls.lua	Sun Jan 23 20:06:50 2022 +0100
+++ b/plugins/mod_tls.lua	Tue Jan 25 13:20:26 2022 +0100
@@ -55,13 +55,14 @@
 
 	module:log("debug", "Creating context for c2s");
 	local request_client_certs = { verify = { "peer", "client_once", }; };
+	local xmpp_alpn = { alpn = "xmpp-server" };
 
 	ssl_ctx_c2s, err_c2s, ssl_cfg_c2s = create_context(host.host, "server", host_c2s, host_ssl, global_c2s); -- for incoming client connections
 	if not ssl_ctx_c2s then module:log("error", "Error creating context for c2s: %s", err_c2s); end
 
 	module:log("debug", "Creating context for s2sout");
 	-- for outgoing server connections
-	ssl_ctx_s2sout, err_s2sout, ssl_cfg_s2sout = create_context(host.host, "client", host_s2s, host_ssl, global_s2s, request_client_certs);
+	ssl_ctx_s2sout, err_s2sout, ssl_cfg_s2sout = create_context(host.host, "client", host_s2s, host_ssl, global_s2s, request_client_certs, xmpp_alpn);
 	if not ssl_ctx_s2sout then module:log("error", "Error creating contexts for s2sout: %s", err_s2sout); end
 
 	module:log("debug", "Creating context for s2sin");