Mercurial > prosody-modules
comparison mod_firewall/definitions.lib.lua @ 2131:ba42c8882026
mod_firewall: Fix another unprotected use of util.cache
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Fri, 18 Mar 2016 09:59:42 +0000 |
| parents | 9239893a2400 |
| children | 5fe483b73fd2 |
comparison
equal
deleted
inserted
replaced
| 2130:9239893a2400 | 2131:ba42c8882026 |
|---|---|
| 4 | 4 |
| 5 local definition_handlers = {}; | 5 local definition_handlers = {}; |
| 6 | 6 |
| 7 local set = require"util.set"; | 7 local set = require"util.set"; |
| 8 local new_throttle = require "util.throttle".create; | 8 local new_throttle = require "util.throttle".create; |
| 9 local new_cache = require "util.cache".new; | |
| 10 | 9 |
| 11 local multirate_cache_size = module:get_option_number("firewall_multirate_cache_limit", 1000); | 10 local multirate_cache_size = module:get_option_number("firewall_multirate_cache_limit", 1000); |
| 12 | 11 |
| 13 function definition_handlers.ZONE(zone_name, zone_members) | 12 function definition_handlers.ZONE(zone_name, zone_members) |
| 14 local zone_member_list = {}; | 13 local zone_member_list = {}; |
| 37 single = function () | 36 single = function () |
| 38 return new_throttle(rate*burst, burst); | 37 return new_throttle(rate*burst, burst); |
| 39 end; | 38 end; |
| 40 | 39 |
| 41 multi = function () | 40 multi = function () |
| 42 local cache = new_cache(max_throttles, evict_only_unthrottled); | 41 local cache = require "util.cache".new(max_throttles, evict_only_unthrottled); |
| 43 return { | 42 return { |
| 44 poll_on = function (_, key, amount) | 43 poll_on = function (_, key, amount) |
| 45 assert(key, "no key"); | 44 assert(key, "no key"); |
| 46 local throttle = cache:get(key); | 45 local throttle = cache:get(key); |
| 47 if not throttle then | 46 if not throttle then |
| 57 end; | 56 end; |
| 58 }; | 57 }; |
| 59 end | 58 end |
| 60 | 59 |
| 61 return definition_handlers; | 60 return definition_handlers; |
| 61 |
