mod_storage_sql2: Support XML serialization for stanzas.
[prosody.git] / core / stanza_router.lua
index 50044766da1eb4fbdf6df6b1ebfe80b577327775..94753678b918facec4d70a5ec14822c4effc4225 100644 (file)
@@ -17,6 +17,18 @@ local jid_prepped_split = require "util.jid".prepped_split;
 local full_sessions = _G.prosody.full_sessions;
 local bare_sessions = _G.prosody.bare_sessions;
 
+local core_post_stanza, core_process_stanza, core_route_stanza;
+
+function deprecated_warning(f)
+       _G[f] = function(...)
+               log("warn", "Using the global %s() is deprecated, use module:send() or prosody.%s(). %s", f, f, debug.traceback());
+               return prosody[f](...);
+       end
+end
+deprecated_warning"core_post_stanza";
+deprecated_warning"core_process_stanza";
+deprecated_warning"core_route_stanza";
+
 local function handle_unhandled_stanza(host, origin, stanza)
        local name, xmlns, origin_type = stanza.name, stanza.attr.xmlns or "jabber:client", origin.type;
        if name == "iq" and xmlns == "jabber:client" then
@@ -199,8 +211,13 @@ function core_route_stanza(origin, stanza)
                        local routed = host_session.events.fire_event("route/remote", { origin = origin, stanza = stanza, from_host = from_host, to_host = host });
                        stanza.attr.xmlns = xmlns; -- reset
                        if not routed then
+                               log("debug", "... no, just kidding.");
+                               if stanza.attr.type == "error" or (stanza.name == "iq" and stanza.attr.type == "result") then return; end
                                core_route_stanza(host_session, st.error_reply(stanza, "cancel", "not-allowed", "Communication with remote domains is not enabled"));
                        end
                end
        end
 end
+prosody.core_process_stanza = core_process_stanza;
+prosody.core_post_stanza = core_post_stanza;
+prosody.core_route_stanza = core_route_stanza;