Mercurial > prosody-hg
comparison plugins/mod_c2s.lua @ 7662:946871f6e3c8
mod_c2s, mod_s2s: Switch connection counting to 'amount' type and enumerate once per statistics interval
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Mon, 12 Sep 2016 15:01:16 +0200 |
| parents | e69df8093387 |
| children | 03aa330562ed f5cbbf69cac8 |
comparison
equal
deleted
inserted
replaced
| 7659:449de852cf38 | 7662:946871f6e3c8 |
|---|---|
| 25 | 25 |
| 26 local c2s_timeout = module:get_option_number("c2s_timeout"); | 26 local c2s_timeout = module:get_option_number("c2s_timeout"); |
| 27 local stream_close_timeout = module:get_option_number("c2s_close_timeout", 5); | 27 local stream_close_timeout = module:get_option_number("c2s_close_timeout", 5); |
| 28 local opt_keepalives = module:get_option_boolean("c2s_tcp_keepalives", module:get_option_boolean("tcp_keepalives", true)); | 28 local opt_keepalives = module:get_option_boolean("c2s_tcp_keepalives", module:get_option_boolean("tcp_keepalives", true)); |
| 29 | 29 |
| 30 local measure_connections = module:measure("connections", "counter"); | 30 local measure_connections = module:measure("connections", "amount"); |
| 31 | 31 |
| 32 local sessions = module:shared("sessions"); | 32 local sessions = module:shared("sessions"); |
| 33 local core_process_stanza = prosody.core_process_stanza; | 33 local core_process_stanza = prosody.core_process_stanza; |
| 34 local hosts = prosody.hosts; | 34 local hosts = prosody.hosts; |
| 35 | 35 |
| 36 local stream_callbacks = { default_ns = "jabber:client" }; | 36 local stream_callbacks = { default_ns = "jabber:client" }; |
| 37 local listener = {}; | 37 local listener = {}; |
| 38 | 38 |
| 39 do | 39 module:hook("stats-update", function () |
| 40 -- Connection counter resets to 0 on load and reload | 40 -- Connection counter resets to 0 on load and reload |
| 41 -- Bump it up to current value | 41 -- Bump it up to current value |
| 42 local count = 0; | 42 local count = 0; |
| 43 for _ in pairs(sessions) do | 43 for _ in pairs(sessions) do |
| 44 count = count + 1; | 44 count = count + 1; |
| 45 end | 45 end |
| 46 measure_connections(count); | 46 measure_connections(count); |
| 47 end | 47 end); |
| 48 | 48 |
| 49 --- Stream events handlers | 49 --- Stream events handlers |
| 50 local stream_xmlns_attr = {xmlns='urn:ietf:params:xml:ns:xmpp-streams'}; | 50 local stream_xmlns_attr = {xmlns='urn:ietf:params:xml:ns:xmpp-streams'}; |
| 51 | 51 |
| 52 function stream_callbacks.streamopened(session, attr) | 52 function stream_callbacks.streamopened(session, attr) |
| 205 end | 205 end |
| 206 end, 200); | 206 end, 200); |
| 207 | 207 |
| 208 --- Port listener | 208 --- Port listener |
| 209 function listener.onconnect(conn) | 209 function listener.onconnect(conn) |
| 210 measure_connections(1); | |
| 211 local session = sm_new_session(conn); | 210 local session = sm_new_session(conn); |
| 212 sessions[conn] = session; | 211 sessions[conn] = session; |
| 213 | 212 |
| 214 session.log("info", "Client connected"); | 213 session.log("info", "Client connected"); |
| 215 | 214 |
| 274 session.data(data); | 273 session.data(data); |
| 275 end | 274 end |
| 276 end | 275 end |
| 277 | 276 |
| 278 function listener.ondisconnect(conn, err) | 277 function listener.ondisconnect(conn, err) |
| 279 measure_connections(-1); | |
| 280 local session = sessions[conn]; | 278 local session = sessions[conn]; |
| 281 if session then | 279 if session then |
| 282 (session.log or log)("info", "Client disconnected: %s", err or "connection closed"); | 280 (session.log or log)("info", "Client disconnected: %s", err or "connection closed"); |
| 283 sm_destroy_session(session, err); | 281 sm_destroy_session(session, err); |
| 284 session.conn = nil; | 282 session.conn = nil; |
