diff mod_s2s_failclose/mod_s2s_failclose.lua @ 6353:83355cfcad1d

mod_s2s_failclose: Report outgoing connection failures to remote servers Plugin form of Prosody trunk rev d4a7cc295363 for earlier versions.
author Kim Alvefur <zash@zash.se>
date Tue, 30 Dec 2025 23:32:50 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_s2s_failclose/mod_s2s_failclose.lua	Tue Dec 30 23:32:50 2025 +0100
@@ -0,0 +1,14 @@
+module:set_global();
+local errors = require "prosody.util.error";
+local incoming_s2s = prosody.incoming_s2s;
+
+-- When an outgoing connection fails, close a corresponding incoming connection with a stream error to indicate the problem to the remote
+module:hook("s2s-destroyed", function(event)
+	local s2sout = event.session;
+	if s2sout.type ~= "s2sout_unauthed" then return end
+	for s2sin in pairs(incoming_s2s) do
+		if s2sin.from_host == s2sout.to_host and s2sin.to_host == s2sout.from_host then
+			s2sin:close(errors.new({ condition = "reset", text = "Could not deliver return stanzas, please check your DNS and firewall" }));
+		end
+	end
+end);