Mercurial > prosody-hg
comparison plugins/mod_c2s.lua @ 6630:6735e2d735d6
mod_c2s, mod_s2s: Collect statistics on number of connections
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 26 Apr 2015 00:06:11 +0200 |
| parents | 57d23c26039b |
| children | 7eb166fa1f26 |
comparison
equal
deleted
inserted
replaced
| 6629:42aeb882b3e1 | 6630:6735e2d735d6 |
|---|---|
| 25 local log = module._log; | 25 local log = module._log; |
| 26 | 26 |
| 27 local c2s_timeout = module:get_option_number("c2s_timeout"); | 27 local c2s_timeout = module:get_option_number("c2s_timeout"); |
| 28 local stream_close_timeout = module:get_option_number("c2s_close_timeout", 5); | 28 local stream_close_timeout = module:get_option_number("c2s_close_timeout", 5); |
| 29 local opt_keepalives = module:get_option_boolean("c2s_tcp_keepalives", module:get_option_boolean("tcp_keepalives", true)); | 29 local opt_keepalives = module:get_option_boolean("c2s_tcp_keepalives", module:get_option_boolean("tcp_keepalives", true)); |
| 30 | |
| 31 local measure_connections = module:measure("connections", "counter"); | |
| 30 | 32 |
| 31 local sessions = module:shared("sessions"); | 33 local sessions = module:shared("sessions"); |
| 32 local core_process_stanza = prosody.core_process_stanza; | 34 local core_process_stanza = prosody.core_process_stanza; |
| 33 local hosts = prosody.hosts; | 35 local hosts = prosody.hosts; |
| 34 | 36 |
| 196 (self.data.log or log)("error", "Traceback[c2s]: %s", err); | 198 (self.data.log or log)("error", "Traceback[c2s]: %s", err); |
| 197 end | 199 end |
| 198 | 200 |
| 199 --- Port listener | 201 --- Port listener |
| 200 function listener.onconnect(conn) | 202 function listener.onconnect(conn) |
| 203 measure_connections(1); | |
| 201 local session = sm_new_session(conn); | 204 local session = sm_new_session(conn); |
| 202 sessions[conn] = session; | 205 sessions[conn] = session; |
| 203 | 206 |
| 204 session.log("info", "Client connected"); | 207 session.log("info", "Client connected"); |
| 205 | 208 |
| 268 session.data(data); | 271 session.data(data); |
| 269 end | 272 end |
| 270 end | 273 end |
| 271 | 274 |
| 272 function listener.ondisconnect(conn, err) | 275 function listener.ondisconnect(conn, err) |
| 276 measure_connections(-1); | |
| 273 local session = sessions[conn]; | 277 local session = sessions[conn]; |
| 274 if session then | 278 if session then |
| 275 (session.log or log)("info", "Client disconnected: %s", err or "connection closed"); | 279 (session.log or log)("info", "Client disconnected: %s", err or "connection closed"); |
| 276 sm_destroy_session(session, err); | 280 sm_destroy_session(session, err); |
| 277 sessions[conn] = nil; | 281 sessions[conn] = nil; |
