diff options
author | Kim Alvefur <zash@zash.se> | 2015-12-11 20:13:37 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2015-12-11 20:13:37 +0100 |
commit | 8ecd4052a5f14f556df22a5c1ea34e7ce2314297 (patch) | |
tree | 386e96fe4a748633cc8c5712d2c0c90f0681b769 /util | |
parent | 2ccee846f29ab3ce03c52a21da77f8a33279ca99 (diff) | |
download | prosody-8ecd4052a5f14f556df22a5c1ea34e7ce2314297.tar.gz prosody-8ecd4052a5f14f556df22a5c1ea34e7ce2314297.zip |
util.datamanager: In append() collect status when closing file handle as it may fail (eg the implied flush)
Diffstat (limited to 'util')
-rw-r--r-- | util/datamanager.lua | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/util/datamanager.lua b/util/datamanager.lua index 1993d6a3..4a371d2c 100644 --- a/util/datamanager.lua +++ b/util/datamanager.lua @@ -210,9 +210,10 @@ local function store(username, host, datastore, data) end local function append(username, host, datastore, ext, data) - local f, msg = io_open(getpath(username, host, datastore, ext, true), "r+"); + local filename = getpath(username, host, datastore, ext, true); + local f, msg = io_open(filename, "r+"); if not f then - f, msg = io_open(getpath(username, host, datastore, ext, true), "w"); + f, msg = io_open(filename, "w"); end if not f then return nil, msg; @@ -225,7 +226,12 @@ local function append(username, host, datastore, ext, data) else return ok, msg; end - f:close(); + + ok, msg = f:close(); + if not ok then + return ok, msg; + end + return true; end |