diff options
author | Matthew Wild <mwild1@gmail.com> | 2010-01-11 00:14:33 +0000 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2010-01-11 00:14:33 +0000 |
commit | a664e2ba60678280b37f036f6cb75d05f6276159 (patch) | |
tree | 9a9121442550b0d85c15ca7c479ec8b908718bd1 /util/prosodyctl.lua | |
parent | e3ac62a1b863a4df2618cd904324560584aeab8e (diff) | |
download | prosody-a664e2ba60678280b37f036f6cb75d05f6276159.tar.gz prosody-a664e2ba60678280b37f036f6cb75d05f6276159.zip |
util.prosodyctl: Report Prosody as not running if the pidfile isn't locked
Diffstat (limited to 'util/prosodyctl.lua')
-rw-r--r-- | util/prosodyctl.lua | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/util/prosodyctl.lua b/util/prosodyctl.lua index e44c78d7..dafc7118 100644 --- a/util/prosodyctl.lua +++ b/util/prosodyctl.lua @@ -12,6 +12,7 @@ local encodings = require "util.encodings"; local stringprep = encodings.stringprep; local usermanager = require "core.usermanager"; local signal = require "util.signal"; +local lfs = require "lfs"; local nodeprep, nameprep = stringprep.nodeprep, stringprep.nameprep; @@ -64,11 +65,17 @@ function getpid() return false, "no-pidfile"; end - local file, err = io.open(pidfile); + local file, err = io.open(pidfile, "w"); if not file then return false, "pidfile-read-failed", err; end + local locked, err = lfs.lock(file, "w"); + if locked then + file:close(); + return false, "pidfile-not-locked"; + end + local pid = tonumber(file:read("*a")); file:close(); @@ -82,7 +89,7 @@ end function isrunning() local ok, pid, err = _M.getpid(); if not ok then - if pid == "pidfile-read-failed" then + if pid == "pidfile-read-failed" or pid == "pidfile-not-locked" then -- Report as not running, since we can't open the pidfile -- (it probably doesn't exist) return true, false; |