plugins/mod_csi_simple.lua
changeset 10281 45a58127a3e5
parent 10029 4498f601516d
child 10306 4c53e58d2468
equal deleted inserted replaced
10280:4e4ce7400b39 10281:45a58127a3e5
    79 	session.conn:resume_writes();
    79 	session.conn:resume_writes();
    80 	return data;
    80 	return data;
    81 end
    81 end
    82 
    82 
    83 function enable_optimizations(session)
    83 function enable_optimizations(session)
    84 	if session.conn and session.conn and session.conn.pause_writes then
    84 	if session.conn and session.conn.pause_writes then
    85 		session.conn:pause_writes();
    85 		session.conn:pause_writes();
    86 		filters.add_filter(session, "stanzas/out", manage_buffer);
    86 		filters.add_filter(session, "stanzas/out", manage_buffer);
    87 		filters.add_filter(session, "bytes/in", flush_buffer);
    87 		filters.add_filter(session, "bytes/in", flush_buffer);
    88 	else
    88 	else
    89 		session.log("warn", "Session connection does not support write pausing");
    89 		session.log("warn", "Session connection does not support write pausing");
    90 	end
    90 	end
    91 end
    91 end
    92 
    92 
    93 function disable_optimizations(session)
    93 function disable_optimizations(session)
    94 	if session.conn and session.conn and session.conn.resume_writes then
    94 	if session.conn and session.conn.resume_writes then
    95 		filters.remove_filter(session, "stanzas/out", manage_buffer);
    95 		filters.remove_filter(session, "stanzas/out", manage_buffer);
    96 		filters.remove_filter(session, "bytes/in", flush_buffer);
    96 		filters.remove_filter(session, "bytes/in", flush_buffer);
    97 		session.conn:resume_writes();
    97 		session.conn:resume_writes();
    98 	end
    98 	end
    99 end
    99 end
   113 	disable_optimizations(session);
   113 	disable_optimizations(session);
   114 end);
   114 end);
   115 
   115 
   116 module:hook("c2s-ondrain", function (event)
   116 module:hook("c2s-ondrain", function (event)
   117 	local session = event.session;
   117 	local session = event.session;
   118 	if session.state == "inactive" and session.conn and session.conn and session.conn.pause_writes then
   118 	if session.state == "inactive" and session.conn and session.conn.pause_writes then
   119 		session.conn:pause_writes();
   119 		session.conn:pause_writes();
   120 		session.log("debug", "Buffer flushed, resuming inactive mode (queue size was %d)", session.csi_counter);
   120 		session.log("debug", "Buffer flushed, resuming inactive mode (queue size was %d)", session.csi_counter);
   121 		session.csi_counter = 0;
   121 		session.csi_counter = 0;
   122 	end
   122 	end
   123 end);
   123 end);