Software / code / prosody-modules
File
mod_storage_xmlarchive/datamanager_append_raw.lib.lua @ 6043:7b093a9b95ea
mod_report_forward: Fix traceback on error message passed to datetime function
If archive:get() returns an error, e.g. because it can't find a message
with the given ID, it may return e.g. nil, "item-not-found" or similar
where the error condition ends up in reported_message_time, which gets
passed to util.datetime, which thus ends up doing math to a string or
error object.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 06 Nov 2024 22:25:41 +0100 |
| parent | 2343:f4ab0966ba89 |
line wrap: on
line source
local io_open = io.open; local dm = require "core.storagemanager".olddm; -- Append a blob of data to a file function dm.append_raw(username, host, datastore, ext, data) if type(data) ~= "string" then return; end local filename = dm.getpath(username, host, datastore, ext, true); local ok; local f, msg = io_open(filename, "r+"); if not f then -- File did probably not exist, let's create it f, msg = io_open(filename, "w"); if not f then return nil, msg, "open"; end end local pos = f:seek("end"); ok, msg = f:write(data); if not ok then f:close(); return ok, msg, "write"; end ok, msg = f:close(); if not ok then return ok, msg; end return true, pos; end