From 54daee236e680fa79b2dd31e812f7e063887a0bf Mon Sep 17 00:00:00 2001
From: Jeija <norrepli@gmail.com>
Date: Sun, 15 Jan 2017 20:11:12 +0100
Subject: [PATCH] Luacontroller: Revert function stripping from digiline
 messages

---
 mesecons/util.lua               | 18 ------------------
 mesecons_luacontroller/init.lua |  8 +++++---
 2 files changed, 5 insertions(+), 21 deletions(-)

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
-- 
GitLab