mod_bosh: Experimental option 'bosh_auto_cork' which witholds any response to a request until all stanzas in it have been processed.
authorMatthew Wild <mwild1@gmail.com>
Wed, 07 Dec 2011 05:54:17 +0000
changeset 4442 bc0a68cae236
parent 4441 a01b7207cb37
child 4443 7456ddcc0b14
mod_bosh: Experimental option 'bosh_auto_cork' which witholds any response to a request until all stanzas in it have been processed.
plugins/mod_bosh.lua
--- a/plugins/mod_bosh.lua	Wed Dec 07 05:17:39 2011 +0000
+++ b/plugins/mod_bosh.lua	Wed Dec 07 05:54:17 2011 +0000
@@ -35,6 +35,7 @@
 local BOSH_DEFAULT_REQUESTS = module:get_option_number("bosh_max_requests", 2);
 
 local consider_bosh_secure = module:get_option_boolean("consider_bosh_secure");
+local auto_cork = module:get_option_boolean("bosh_auto_cork", false);
 
 local default_headers = { ["Content-Type"] = "text/xml; charset=utf-8" };
 
@@ -268,7 +269,7 @@
 			end
 			--log("debug", "Sending BOSH data: %s", tostring(s));
 			local oldest_request = r[1];
-			if oldest_request then
+			if oldest_request and (not(auto_cork) or waiting_requests[oldest_request]) then
 				log("debug", "We have an open request, so sending on that");
 				response.body = t_concat({
 					"<body xmlns='http://jabber.org/protocol/httpbind' ",