mod_csi_simple: Separate out functions to enable/disable optimizations

This allows reusing this logic outside the events. Letting the functions
be module globals makes it easier to access from eg the telnet console.
This commit is contained in:
Kim Alvefur 2019-03-24 20:41:25 +01:00
parent 6c89a86e0d
commit 1e77bb6ed2

View file

@ -75,8 +75,7 @@ local function flush_buffer(data, session)
return data;
end
module:hook("csi-client-inactive", function (event)
local session = event.origin;
function enable_optimizations(session)
if session.conn and session.conn and session.conn.pause_writes then
session.conn:pause_writes();
filters.add_filter(session, "stanzas/out", manage_buffer);
@ -84,15 +83,24 @@ module:hook("csi-client-inactive", function (event)
else
session.log("warn", "Session connection does not support write pausing");
end
end);
end
module:hook("csi-client-active", function (event)
local session = event.origin;
function disble_optimizations(session)
if session.conn and session.conn and session.conn.resume_writes then
filters.remove_filter(session, "stanzas/out", manage_buffer);
filters.remove_filter(session, "bytes/in", flush_buffer);
session.conn:resume_writes();
end
end
module:hook("csi-client-inactive", function (event)
local session = event.origin;
enable_optimizations(session);
end);
module:hook("csi-client-active", function (event)
local session = event.origin;
disble_optimizations(session);
end);