aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2012-08-26 20:53:40 +0200
committerKim Alvefur <zash@zash.se>2012-08-26 20:53:40 +0200
commit4cb8031b57dafb7702238a2b4a6268a20fb7c669 (patch)
tree10b4f9b15956a780b6a061d4c96344df5cabff85
parentb04c66b95a95781173649712061e48f1508241f3 (diff)
downloadprosody-4cb8031b57dafb7702238a2b4a6268a20fb7c669.tar.gz
prosody-4cb8031b57dafb7702238a2b4a6268a20fb7c669.zip
util.datamanager: Ignore errors if the file is gone after removing it
-rw-r--r--util/datamanager.lua17
1 files changed, 13 insertions, 4 deletions
diff --git a/util/datamanager.lua b/util/datamanager.lua
index b745cd39..17c614ed 100644
--- a/util/datamanager.lua
+++ b/util/datamanager.lua
@@ -309,6 +309,14 @@ function list_stores(username, host)
return list;
end
+local function do_remove(path)
+ local ok, err = os_remove(path);
+ if not ok and lfs.attributes(path, "mode") then
+ return ok, err;
+ end
+ return true
+end
+
function purge(username, host)
local host_dir = format("%s/%s/", data_path, encode(host));
local deleted = 0;
@@ -316,10 +324,11 @@ function purge(username, host)
for file in lfs.dir(host_dir) do
if lfs.attributes(host_dir..file, "mode") == "directory" then
local store = decode(file);
- local ok, err = os_remove(getpath(username, host, store));
- if not ok and not err:lower():match("no such") then errs[#errs+1] = err; end
- local ok, err = os_remove(getpath(username, host, store, "list"));
- if not ok and not err:lower():match("no such") then errs[#errs+1] = err; end
+ local ok, err = do_remove(getpath(username, host, store));
+ if not ok then errs[#errs+1] = err; end
+
+ local ok, err = do_remove(getpath(username, host, store, "list"));
+ if not ok then errs[#errs+1] = err; end
end
end
return #errs == 0, t_concat(errs, ", ");