modules/admin-{mini,full}: start sysupgrade in background
[project/luci.git] / modules / admin-mini / luasrc / controller / mini / system.lua
index 93f113a329ffb07a1399466ff4317aa072b178f8..44d0688f6dcfcd4ad9d2d074b87ddc4c42182749 100644 (file)
@@ -151,21 +151,15 @@ function action_upgrade()
                if has_platform and has_image and has_support then
                        -- Mimetype text/plain
                        luci.http.prepare_content("text/plain")
+                       luci.http.write("Starting luci-flash...\n")
 
                        -- Now invoke sysupgrade
                        local keepcfg = keep_avail and luci.http.formvalue("keepcfg") == "1"
-                       local fd = io.popen("/sbin/luci-flash %s %q" %{
+                       local flash = ltn12_popen("/sbin/luci-flash %s %q" %{
                                keepcfg and "-k %q" % _keep_pattern() or "", tmpfile
                        })
 
-                       if fd then
-                               while true do
-                                       local ln = fd:read("*l")
-                                       if not ln then break end
-                                       luci.http.write(ln .. "\n")
-                               end
-                               fd:close()
-                       end
+                       luci.ltn12.pump.all(flash, luci.http.write)
 
                        -- Make sure the device is rebooted
                        luci.sys.reboot()