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