+local sm_streamclosed = sessionmanager.streamclosed;
+local st = require "util.stanza";
+
+local stream_callbacks = { stream_tag = "http://etherx.jabber.org/streams|stream",
+ default_ns = "jabber:client",
+ streamopened = sm_streamopened, streamclosed = sm_streamclosed, handlestanza = core_process_stanza };
+
+function stream_callbacks.error(session, error, data)
+ if error == "no-stream" then
+ session.log("debug", "Invalid opening stream header");
+ session:close("invalid-namespace");
+ elseif session.close then
+ (session.log or log)("debug", "Client XML parse error: %s", tostring(error));
+ session:close("xml-not-well-formed");
+ end
+end
+
+local function handleerr(err) log("error", "Traceback[c2s]: %s: %s", tostring(err), debug.traceback()); end
+function stream_callbacks.handlestanza(a, b)
+ xpcall(function () core_process_stanza(a, b) end, handleerr);
+end