plugins/mod_bosh.lua
changeset 7286 32754b15b28a
parent 7050 9ca2b720ad43
child 7289 30b9433a9f3e
child 7329 d11701e86702
--- a/plugins/mod_bosh.lua	Mon Mar 14 18:27:16 2016 +0100
+++ b/plugins/mod_bosh.lua	Thu Mar 17 12:46:52 2016 +0100
@@ -22,7 +22,6 @@
 local math_min = math.min;
 local xpcall, tostring, type = xpcall, tostring, type;
 local traceback = debug.traceback;
-local runner = require"util.async".runner;
 
 local xmlns_streams = "http://etherx.jabber.org/streams";
 local xmlns_xmpp_streams = "urn:ietf:params:xml:ns:xmpp-streams";
@@ -229,8 +228,6 @@
 	sm_destroy_session(session);
 end
 
-local runner_callbacks = { };
-
 -- Handle the <body> tag in the request payload.
 function stream_callbacks.streamopened(context, attr)
 	local request, response = context.request, context.response;
@@ -263,10 +260,6 @@
 		};
 		sessions[sid] = session;
 
-		session.thread = runner(function (stanza)
-			session:dispatch_stanza(stanza);
-		end, runner_callbacks, session);
-
 		local filter = initialize_filters(session);
 
 		session.log("debug", "BOSH session created for request from %s", session.ip);
@@ -364,11 +357,6 @@
 end
 
 local function handleerr(err) log("error", "Traceback[bosh]: %s", traceback(tostring(err), 2)); end
-
-function runner_callbacks:error(err)
-	return handleerr(err);
-end
-
 function stream_callbacks.handlestanza(context, stanza)
 	if context.ignore then return; end
 	log("debug", "BOSH stanza received: %s\n", stanza:top_tag());
@@ -378,7 +366,9 @@
 			stanza.attr.xmlns = nil;
 		end
 		stanza = session.filter("stanzas/in", stanza);
-		session.thread:run(stanza);
+		if stanza then
+			return xpcall(function () return core_process_stanza(session, stanza) end, handleerr);
+		end
 	end
 end