view mod_compat_vcard/mod_compat_vcard.lua @ 4629:0e60ce83205c

mod_s2s_keepalive: Ignore errors from the local server If a stanza can't be delivered and instead an bounce is generated, the origin of the error, when different from the stanza 'from' should be indicated in the 'by' attribute of the <error>, which we look for here so this doesn't count as a successful ping. An error that does come from the remote means we have connectivity, but probably no XEP-0199 handling. This is fine. We care about connectivity, not protocol.
author Kim Alvefur <zash@zash.se>
date Wed, 21 Jul 2021 15:57:13 +0200
parents 3df303543765
children
line wrap: on
line source

-- Compatibility with clients and servers (i.e. ejabberd) that send vcard
-- requests to the full JID
--
-- https://support.process-one.net/browse/EJAB-1045

local jid_bare = require "util.jid".bare;
local st = require "util.stanza";
local core_process_stanza = prosody.core_process_stanza;

module:hook("iq/full", function(event)
	local stanza = event.stanza;
	local payload = stanza.tags[1];
	if payload and stanza.attr.type == "get" and payload.name == "vCard" and payload.attr.xmlns == "vcard-temp" then
		local fixed_stanza = st.clone(event.stanza);
		fixed_stanza.attr.to = jid_bare(stanza.attr.to);
		core_process_stanza(event.origin, fixed_stanza);
		return true;
	end
end, 1);