Mercurial > prosody-hg
comparison plugins/mod_net_multiplex.lua @ 6380:4220ffb87b22
net.http, net.http.server, mod_c2s, mod_s2s, mod_component, mod_admin_telnet, mod_net_multiplex: Add ondetach to release connection from 'sessions' table (or equivalent)
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Fri, 29 Aug 2014 11:54:34 +0100 |
| parents | bcabea740c00 |
| children | 021d2b844c51 00bca79ae778 |
comparison
equal
deleted
inserted
replaced
| 6379:a280bd6ccce2 | 6380:4220ffb87b22 |
|---|---|
| 32 end | 32 end |
| 33 | 33 |
| 34 function listener.onincoming(conn, data) | 34 function listener.onincoming(conn, data) |
| 35 if not data then return; end | 35 if not data then return; end |
| 36 local buf = buffers[conn]; | 36 local buf = buffers[conn]; |
| 37 buffers[conn] = nil; | |
| 38 buf = buf and buf..data or data; | 37 buf = buf and buf..data or data; |
| 39 for service, multiplex_pattern in pairs(available_services) do | 38 for service, multiplex_pattern in pairs(available_services) do |
| 40 if buf:match(multiplex_pattern) then | 39 if buf:match(multiplex_pattern) then |
| 41 module:log("debug", "Routing incoming connection to %s", service.name); | 40 module:log("debug", "Routing incoming connection to %s", service.name); |
| 42 local listener = service.listener; | 41 local listener = service.listener; |
| 55 | 54 |
| 56 function listener.ondisconnect(conn, err) | 55 function listener.ondisconnect(conn, err) |
| 57 buffers[conn] = nil; -- warn if no buffer? | 56 buffers[conn] = nil; -- warn if no buffer? |
| 58 end | 57 end |
| 59 | 58 |
| 59 listener.ondetach = listener.ondisconnect; | |
| 60 | |
| 60 module:provides("net", { | 61 module:provides("net", { |
| 61 name = "multiplex"; | 62 name = "multiplex"; |
| 62 config_prefix = ""; | 63 config_prefix = ""; |
| 63 listener = listener; | 64 listener = listener; |
| 64 }); | 65 }); |
