diff --git a/mesecons/util.lua b/mesecons/util.lua index b9b0cef..39f5696 100644 --- a/mesecons/util.lua +++ b/mesecons/util.lua @@ -151,24 +151,6 @@ function mesecon.tablecopy(table) -- deep table copy return newtable end -function mesecon.tablecopy_stripfunctions(table) -- deep table copy, but remove all functions - if type(table) == "function" then return nil end -- functions become nil - if type(table) ~= "table" then return table end -- no need to copy - local newtable = {} - - for idx, item in pairs(table) do - if type(idx) ~= "function" then - if type(item) == "table" then - newtable[idx] = mesecon.tablecopy_stripfunctions(item) - elseif type(item) ~= "function" then - newtable[idx] = item - end - end - end - - return newtable -end - function mesecon.cmpAny(t1, t2) if type(t1) ~= type(t2) then return false end if type(t1) ~= "table" and type(t2) ~= "table" then return t1 == t2 end diff --git a/mesecons_luacontroller/init.lua b/mesecons_luacontroller/init.lua index 3c34887..d874fdf 100644 --- a/mesecons_luacontroller/init.lua +++ b/mesecons_luacontroller/init.lua @@ -278,9 +278,11 @@ local function get_digiline_send(pos) return false end - -- No sending functions over the wire and make sure serialized version - -- of the data is not insanely long to prevent DoS-like attacks - msg = mesecon.tablecopy_stripfunctions(msg) + -- It is technically possible to send functions over the wire since + -- the high performance impact of stripping those from the data has + -- been decided to not be worth the added realism. + -- Make sure serialized version of the data is not insanely long to + -- prevent DoS-like attacks local msg_ser = minetest.serialize(msg) if #msg_ser > mesecon.setting("luacontroller_digiline_maxlen", 50000) then return false