# HG changeset patch # User Matthew Wild # Date 1343312046 -3600 # Node ID 1a7cdc874b8c525eb60e6c531c684ae02223d15c # Parent f25b6a9f97bbe7738384c56034169dafa819c93f mod_compat_vcard: Handle vcard requests sent to full JIDs (a spec violation commited by older versions of ejabberd and possibly others) - replaces vcard_compatibility option from Prosody 0.8 diff -r f25b6a9f97bb -r 1a7cdc874b8c mod_compat_vcard/mod_compat_vcard.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_compat_vcard/mod_compat_vcard.lua Thu Jul 26 15:14:06 2012 +0100 @@ -0,0 +1,19 @@ +-- 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.name == "vCard" and stanza.attr.type == "get" 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);