mod_bosh: Return a proper BOSH error response instead of deprecated(?) status code (See #343)
authorKim Alvefur <zash@zash.se>
Tue, 19 Apr 2016 12:16:17 +0200
changeset 7380 6c98e783272a
parent 7379 f9a5d9f60561
child 7381 d15cfe8627ad
mod_bosh: Return a proper BOSH error response instead of deprecated(?) status code (See #343)
plugins/mod_bosh.lua
--- a/plugins/mod_bosh.lua	Tue Apr 19 12:15:20 2016 +0200
+++ b/plugins/mod_bosh.lua	Tue Apr 19 12:16:17 2016 +0200
@@ -129,7 +129,9 @@
 	local ok, err = stream:feed(body);
 	if not ok then
 		module:log("warn", "Error parsing BOSH payload; %s", err)
-		return 400;
+		local close_reply = st.stanza("body", { xmlns = xmlns_bosh, type = "terminate",
+			["xmlns:stream"] = xmlns_streams, condition = "bad-request" });
+		return tostring(close_reply);
 	end
 
 	-- Stanzas (if any) in the request have now been processed, and
@@ -184,7 +186,9 @@
 		return; -- A response has been sent already
 	end
 	module:log("warn", "Unable to associate request with a session (incomplete request?)");
-	return 400;
+	local close_reply = st.stanza("body", { xmlns = xmlns_bosh, type = "terminate",
+		["xmlns:stream"] = xmlns_streams, condition = "item-not-found" });
+	return tostring(close_reply) .. "\n";
 end