Mercurial > prosody-modules
view mod_c2s_limit_sessions/mod_c2s_limit_sessions.lua @ 5381:32a9817c7516
mod_firewall: Initialize compiled chunk just once for all handlers
This should fix a case where some stateful dependencies (such as throttles)
produce separate instances for every call to new_handler(), leading to
surprising behaviour (e.g. rules executed via JUMP CHAIN vs ::deliver would
have separate rate limits).
This also adds better error handling in case the compiled code fails to run
for some reason.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 28 Apr 2023 13:27:06 +0100 |
parents | f581210093a7 |
children |
line wrap: on
line source
-- mod_c2s_limit_sessions local next, count = next, require "util.iterators".count; local max_resources = module:get_option_number("max_resources", 10); local sessions = hosts[module.host].sessions; module:hook("resource-bind", function(event) local session = event.session; if count(next, sessions[session.username].sessions) > max_resources then session:close{ condition = "policy-violation", text = "Too many resources" }; return false end end, -1);