diff --git a/package/gluon-core/luasrc/usr/lib/lua/gluon/site_config.lua b/package/gluon-core/luasrc/usr/lib/lua/gluon/site_config.lua
index 4c0a2d221b848aa7ccfa6b45ce65f2be06d21098..7e27525d095226bffb39057696f4f273f9bab7a9 100644
--- a/package/gluon-core/luasrc/usr/lib/lua/gluon/site_config.lua
+++ b/package/gluon-core/luasrc/usr/lib/lua/gluon/site_config.lua
@@ -1,27 +1,29 @@
 local function get_site_config()
-  local config = '/lib/gluon/site.json'
+	local config = '/lib/gluon/site.json'
 
-  local json = require 'luci.jsonc'
-  local ltn12 = require 'luci.ltn12'
+	local json = require 'luci.jsonc'
+	local decoder = json.new()
+	local sink = decoder:sink()
 
-  local file = assert(io.open(config))
+	local file = assert(io.open(config))
 
-  local decoder = json.new()
-  ltn12.pump.all(ltn12.source.file(file), decoder:sink())
+	while true do
+		local chunk = file:read(2048)
+		if not chunk or chunk:len() == 0 then break end
+		sink(chunk)
+	end
 
-  file:close()
+	file:close()
 
-  return assert(decoder:get())
+	return assert(decoder:get())
 end
 
 local setmetatable = setmetatable
 
 module 'gluon.site_config'
 
-setmetatable(_M,
-	{
-		__index = get_site_config(),
-	}
-)
+setmetatable(_M, {
+	__index = get_site_config(),
+})
 
 return _M