Mercurial > prosody-hg
comparison plugins/mod_limits.lua @ 14161:9728c3fabeef
Merge 13.0->trunk
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Wed, 29 Apr 2026 17:12:59 +0100 |
| parents | 4b8cf9420cf1 |
| children |
comparison
equal
deleted
inserted
replaced
| 14147:320e1d49aa9e | 14161:9728c3fabeef |
|---|---|
| 69 module:hook(session_type.."-connected", function (event) | 69 module:hook(session_type.."-connected", function (event) |
| 70 if not event.session then return; end | 70 if not event.session then return; end |
| 71 local session_ip = get_truncated_ip(event.conn); | 71 local session_ip = get_truncated_ip(event.conn); |
| 72 local new_count = (current_ips[session_ip] or 0) + 1; | 72 local new_count = (current_ips[session_ip] or 0) + 1; |
| 73 current_ips[session_ip] = new_count; | 73 current_ips[session_ip] = new_count; |
| 74 module:log("debug", "Connection from IP %s opened, total now %d", event.conn:ip(), new_count); | |
| 74 if new_count > max_sessions then | 75 if new_count > max_sessions then |
| 75 module:log("warn", "Rejecting stream from %s (%d of %d current connections)", event.conn:ip(), new_count, max_sessions); | 76 module:log("warn", "Rejecting stream from %s (%d of %d current connections)", event.conn:ip(), new_count, max_sessions); |
| 76 event.session:close({ condition = "policy-violation", text = "too many connections" }); | 77 event.session:close({ condition = "policy-violation", text = "too many connections" }); |
| 77 end | 78 end |
| 78 end); | 79 end); |
| 83 local new_count = (current_ips[session_ip] or 0) - 1; | 84 local new_count = (current_ips[session_ip] or 0) - 1; |
| 84 if new_count < 0 then | 85 if new_count < 0 then |
| 85 module:log("warn", "IP counting failure"); | 86 module:log("warn", "IP counting failure"); |
| 86 new_count = 0; | 87 new_count = 0; |
| 87 end | 88 end |
| 89 module:log("debug", "Connection from IP %s closed, total now %d", event.conn:ip(), new_count); | |
| 88 if new_count == 0 then | 90 if new_count == 0 then |
| 89 current_ips[session_ip] = nil; | 91 current_ips[session_ip] = nil; |
| 90 else | 92 else |
| 91 current_ips[session_ip] = new_count; | 93 current_ips[session_ip] = new_count; |
| 92 end | 94 end |
