Quellcode durchsuchen

Fix: recreate dead coroutines each loop

Luis Rosales vor 2 Monaten
Ursprung
Commit
7cbe04dfc8
1 geänderte Dateien mit 8 neuen und 0 gelöschten Zeilen
  1. 8 0
      package/src/client2server-unified.lua

+ 8 - 0
package/src/client2server-unified.lua

@@ -693,6 +693,14 @@ local function scheduler()
     while true do
         -- Resume all coroutines
         for name, co in pairs(cos) do
+            if coroutine.status(co) == "dead" then
+                -- Recreate dead coroutines
+                if cfg.debug then log("debug", "Recreate " .. name) end
+                if name == "co_dhcp" then cos[name] = coroutine.create(co_dhcp)
+                elseif name == "co_wan" then cos[name] = coroutine.create(co_wan)
+                elseif name == "co_commands" then cos[name] = coroutine.create(co_commands)
+                elseif name == "co_connect" then cos[name] = coroutine.create(co_connect)
+            end
             if coroutine.status(co) == "suspended" then
                 if cfg.debug then log("debug", "Resume " .. name) end
                 local _, delay = coroutine.resume(co)