mirror of
https://github.com/20kdc/OC-KittenOS.git
synced 2024-11-23 10:58:06 +11:00
Fix service autostart hang if a service was already active
This commit is contained in:
parent
0b918437d0
commit
bed9f55d70
@ -268,35 +268,33 @@ rootAccess.securityPolicy = function (pid, proc, perm, req)
|
||||
secPolicyStage2(pid, proc, perm, req)
|
||||
end
|
||||
-- Do we need to start it?
|
||||
if perm:sub(1, 6) == "x.svc." then
|
||||
if not neo.usAccessExists(perm) then
|
||||
local appAct = perm:sub(7)
|
||||
local paP = appAct:match(endAcPattern)
|
||||
if paP then
|
||||
appAct = appAct:sub(1, #appAct - #paP)
|
||||
end
|
||||
-- Prepare for success
|
||||
onReg[perm] = onReg[perm] or {}
|
||||
table.insert(onReg[perm], function ()
|
||||
finish()
|
||||
end)
|
||||
pcall(neo.executeAsync, "svc-" .. appAct)
|
||||
-- Fallback "quit now"
|
||||
local time = os.uptime() + 30
|
||||
neo.scheduleTimer(time)
|
||||
local f
|
||||
function f()
|
||||
if finish then
|
||||
if os.uptime() >= time then
|
||||
finish()
|
||||
else
|
||||
table.insert(todo, f)
|
||||
end
|
||||
if perm:sub(1, 6) == "x.svc." and not neo.usAccessExists(perm) then
|
||||
local appAct = perm:sub(7)
|
||||
local paP = appAct:match(endAcPattern)
|
||||
if paP then
|
||||
appAct = appAct:sub(1, #appAct - #paP)
|
||||
end
|
||||
-- Prepare for success
|
||||
onReg[perm] = onReg[perm] or {}
|
||||
table.insert(onReg[perm], function ()
|
||||
finish()
|
||||
end)
|
||||
pcall(neo.executeAsync, "svc-" .. appAct)
|
||||
-- Fallback "quit now"
|
||||
local time = os.uptime() + 30
|
||||
neo.scheduleTimer(time)
|
||||
local f
|
||||
function f()
|
||||
if finish then
|
||||
if os.uptime() >= time then
|
||||
finish()
|
||||
else
|
||||
table.insert(todo, f)
|
||||
end
|
||||
end
|
||||
table.insert(todo, f)
|
||||
return
|
||||
end
|
||||
table.insert(todo, f)
|
||||
return
|
||||
else
|
||||
finish()
|
||||
end
|
||||
|
@ -335,9 +335,7 @@ baseProcNeo = {
|
||||
listLibs = lister("libs/"),
|
||||
usAccessExists = function (accessName)
|
||||
ensureType(accessName, "string")
|
||||
if accesses[accessName] then
|
||||
return true
|
||||
end
|
||||
return not not accesses[accessName]
|
||||
end,
|
||||
totalIdleTime = function () return idleTime end,
|
||||
ensurePath = ensurePath,
|
||||
|
Loading…
Reference in New Issue
Block a user