diff options
author | Kim Alvefur <zash@zash.se> | 2018-05-22 21:22:51 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2018-05-22 21:22:51 +0200 |
commit | d11db6533450a7ac6324963ab6245032ff5b3ba9 (patch) | |
tree | c59bbcc634afedf783f5489c9b2d6747d70461fb /plugins/muc | |
parent | ce7f4090d4a82a4c9f801eb37f07b27aba8c36a0 (diff) | |
download | prosody-d11db6533450a7ac6324963ab6245032ff5b3ba9.tar.gz prosody-d11db6533450a7ac6324963ab6245032ff5b3ba9.zip |
MUC: Add support for an optional hard limit on number of rooms (fixes #766)
Diffstat (limited to 'plugins/muc')
-rw-r--r-- | plugins/muc/mod_muc.lua | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/plugins/muc/mod_muc.lua b/plugins/muc/mod_muc.lua index 979aed8c..10de8c95 100644 --- a/plugins/muc/mod_muc.lua +++ b/plugins/muc/mod_muc.lua @@ -124,8 +124,15 @@ local function room_save(room, forced, savestate) end end +local max_rooms = module:get_option_number("muc_max_rooms"); +local max_live_rooms = module:get_option_number("muc_room_cache_size", 100); + local eviction_hit_rate = module:measure("room_eviction", "rate"); -local rooms = cache.new(module:get_option_number("muc_room_cache_size", 100), function (jid, room) +local rooms = cache.new(max_rooms or max_live_rooms, function (jid, room) + if max_rooms then + module:log("info", "Room limit of %d reached, no new rooms allowed"); + return false; + end module:log("debug", "Evicting room %s", jid); eviction_hit_rate(); room_items_cache[room.jid] = room:get_public() and room:get_name() or nil; |