Mercurial > prosody-hg
comparison plugins/mod_csi_simple.lua @ 9649:a20849226598 0.11
mod_csi_simple: Bypass importance event in active mode (fixes #1249)
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Tue, 27 Nov 2018 19:05:11 +0100 |
| parents | dfebf6cac027 |
| children | db6bcafd76c9 |
comparison
equal
deleted
inserted
replaced
| 9648:dfebf6cac027 | 9649: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 |
