plugins/mod_csi_simple.lua
branch0.11
changeset 9653 a20849226598
parent 9652 dfebf6cac027
child 9654 db6bcafd76c9
equal deleted inserted replaced
9652:dfebf6cac027 9653:a20849226598
    69 	return true;
    69 	return true;
    70 end, -1);
    70 end, -1);
    71 
    71 
    72 module:hook("csi-client-inactive", function (event)
    72 module:hook("csi-client-inactive", function (event)
    73 	local session = event.origin;
    73 	local session = event.origin;
       
    74 	session.state = "inactive";
    74 	if session.pump then
    75 	if session.pump then
    75 		session.pump:pause();
    76 		session.pump:pause();
    76 	else
    77 	else
    77 		local bare_jid = jid.join(session.username, session.host);
    78 		local bare_jid = jid.join(session.username, session.host);
    78 		local send = session.send;
    79 		local send = session.send;
    79 		session._orig_send = send;
    80 		session._orig_send = send;
    80 		local pump = new_pump(session.send, queue_size);
    81 		local pump = new_pump(session.send, queue_size);
    81 		pump:pause();
    82 		pump:pause();
    82 		session.pump = pump;
    83 		session.pump = pump;
    83 		function session.send(stanza)
    84 		function session.send(stanza)
    84 			if module:fire_event("csi-is-stanza-important", { stanza = stanza, session = session }) then
    85 			if session.state == "active" or module:fire_event("csi-is-stanza-important", { stanza = stanza, session = session }) then
    85 				pump:flush();
    86 				pump:flush();
    86 				send(stanza);
    87 				send(stanza);
    87 			else
    88 			else
    88 				if st.is_stanza(stanza) and st.attr.xmlns == nil and st.name ~= "iq" then
    89 				if st.is_stanza(stanza) and st.attr.xmlns == nil and st.name ~= "iq" then
    89 					stanza = st.clone(stanza);
    90 					stanza = st.clone(stanza);
    96 	end
    97 	end
    97 end);
    98 end);
    98 
    99 
    99 module:hook("csi-client-active", function (event)
   100 module:hook("csi-client-active", function (event)
   100 	local session = event.origin;
   101 	local session = event.origin;
       
   102 	session.state = "active";
   101 	if session.pump then
   103 	if session.pump then
   102 		session.pump:resume();
   104 		session.pump:resume();
   103 	end
   105 	end
   104 end);
   106 end);
   105 
   107