Software /
code /
prosody-modules
Diff
mod_firewall/mod_firewall.lua @ 2367:3ebd3cb4d7d2
mod_firewall: When compiling on the command-line with -v, ensure chain function names are unique and valid ids
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Tue, 15 Nov 2016 15:01:14 +0000 |
parent | 2366:14021c93a962 |
child | 2368:7e1d8c46d788 |
line wrap: on
line diff
--- a/mod_firewall/mod_firewall.lua Tue Nov 15 15:00:38 2016 +0000 +++ b/mod_firewall/mod_firewall.lua Tue Nov 15 15:01:14 2016 +0000 @@ -476,22 +476,25 @@ print("local active_definitions = "..serialize(active_definitions)..";"); print(); end + local c = 0; for chain, handler_code in pairs(chain_functions) do + c = c + 1; print("---- Chain "..chain:gsub("_", " ")); + local chain_func_name = "chain_"..tostring(c).."_"..chain:gsub("%p", "_"); if not verbose then - print(("%s = %s;"):format(chain, handler_code:sub(8))); + print(("%s = %s;"):format(chain_func_name, handler_code:sub(8))); else - print(("local %s = (%s)(active_definitions, fire_event, logger(%q));"):format(chain, handler_code:sub(8), filename)); + print(("local %s = (%s)(active_definitions, fire_event, logger(%q));"):format(chain_func_name, handler_code:sub(8), filename)); print(); local chain_definition = chains[chain]; if chain_definition and chain_definition.type == "event" then for _, event_name in ipairs(chain_definition) do - print(("module:hook(%q, %s, %d);"):format(event_name, chain, chain_definition.priority or 0)); + print(("module:hook(%q, %s, %d);"):format(event_name, chain_func_name, chain_definition.priority or 0)); end end - print(("module:hook(%q, %s, %d);"):format("firewall/chains/"..chain, chain, chain_definition.priority or 0)); + print(("module:hook(%q, %s, %d);"):format("firewall/chains/"..chain, chain_func_name, chain_definition.priority or 0)); end print("---- End of chain "..chain);