mod_bosh: Set Content-Type in response headers

Tue, 03 Mar 2009 19:49:40 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Tue, 03 Mar 2009 19:49:40 +0000
changeset 866
8958fe4b2391
parent 865
2dce34e9182d
child 867
21347a87e185

mod_bosh: Set Content-Type in response headers

plugins/mod_bosh.lua file | annotate | diff | comparison | revisions
--- a/plugins/mod_bosh.lua	Tue Mar 03 17:25:20 2009 +0000
+++ b/plugins/mod_bosh.lua	Tue Mar 03 19:49:40 2009 +0000
@@ -22,6 +22,8 @@
 local BOSH_DEFAULT_REQUESTS = tonumber(config.get("*", "core", "bosh_max_requests")) or 2;
 local BOSH_DEFAULT_MAXPAUSE = tonumber(config.get("*", "core", "bosh_max_pause")) or 300;
 
+local default_headers = { ["Content-Type"] = "text/xml; charset=utf-8" };
+
 local t_insert, t_remove, t_concat = table.insert, table.remove, table.concat;
 local os_time = os.time;
 
@@ -100,7 +102,7 @@
 
 local function bosh_reset_stream(session) session.notopen = true; end
 
-local session_close_reply = st.stanza("body", { xmlns = xmlns_bosh, type = "terminate" });
+local session_close_reply = { headers = default_headers, body = st.stanza("body", { xmlns = xmlns_bosh, type = "terminate" }) };
 local function bosh_close_stream(session, reason)
 	(session.log or log)("info", "BOSH client disconnected");
 	session_close_reply.attr.condition = reason;
@@ -124,7 +126,7 @@
 		if not hosts[attr.to] then
 			-- Unknown host
 			session_close_reply.attr.condition = "host-unknown";
-			request:send(tostring(session_close_reply));
+			request:send{ headers = default_headers, body = tostring(session_close_reply) };
 			request.notopen = nil
 			return;
 		end
@@ -137,7 +139,7 @@
 		sessions[sid] = session;
 		log("info", "New BOSH session, assigned it sid '%s'", sid);
 		local r, send_buffer = session.requests, session.send_buffer;
-		local response = { }
+		local response = { headers = default_headers }
 		function session.send(s)
 			log("debug", "Sending BOSH data: %s", tostring(s));
 			local oldest_request = r[1];
@@ -179,7 +181,7 @@
 									inactivity = tostring(BOSH_DEFAULT_INACTIVITY), polling = tostring(BOSH_DEFAULT_POLLING), requests = tostring(BOSH_DEFAULT_REQUESTS), hold = tostring(session.bosh_hold), maxpause = "120", 
 									sid = sid, ver  = '1.6', from = session.host, secure = 'true', ["xmpp:version"] = "1.0", 
 									["xmlns:xmpp"] = "urn:xmpp:xbosh", ["xmlns:stream"] = "http://etherx.jabber.org/streams" }):add_child(features);
-		request:send(tostring(response));
+		request:send{ headers = default_headers, body = tostring(response) };
 				
 		request.sid = sid;
 		return;
@@ -189,7 +191,7 @@
 	if not session then
 		-- Unknown sid
 		log("info", "Client tried to use sid '%s' which we don't know about", sid);
-		request:send(tostring(st.stanza("body", { xmlns = xmlns_bosh, type = "terminate", condition = "item-not-found" })));
+		request:send{ headers = default_headers, body = tostring(st.stanza("body", { xmlns = xmlns_bosh, type = "terminate", condition = "item-not-found" })) };
 		request.notopen = nil;
 		return;
 	end

mercurial