equal
deleted
inserted
replaced
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 |