Software /
code /
prosody-modules
Diff
mod_storage_xmlarchive/mod_storage_xmlarchive.lua @ 2290:4786bf0a9334
mod_storage_xmlarchive: Determine if a message is the first of day by checking if the list file exists before
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 23 Aug 2016 23:39:57 +0200 |
parent | 2289:aa984980a4dc |
child | 2396:544ee057a23f |
line wrap: on
line diff
--- a/mod_storage_xmlarchive/mod_storage_xmlarchive.lua Tue Aug 23 17:54:00 2016 +0200 +++ b/mod_storage_xmlarchive/mod_storage_xmlarchive.lua Tue Aug 23 23:39:57 2016 +0200 @@ -5,6 +5,7 @@ -- -- luacheck: ignore unused self +local lfs = require "lfs"; local dm = require "core.storagemanager".olddm; local hmac_sha256 = require"util.hashes".hmac_sha256; local st = require"util.stanza"; @@ -37,13 +38,14 @@ return nil, err; end + -- If the day-file is missing then we need to add it to the list of days + local first_of_day = not lfs.attributes(dm.getpath(username .. "@" .. day, module.host, self.store, "list")); + local offset = ok and err; local id = day .. "-" .. hmac_sha256(username.."@"..day.."+"..offset, data, true):sub(-16); ok, err = dm.list_append(username.."@"..day, module.host, self.store, { id = id, when = dt.datetime(when), with = with, offset = offset, length = #data }); - if offset == 0 then - -- means the message is at the beginnig of the file, so it's a new day - -- so we add this new day to the "index" + if ok and first_of_day then ok, err = dm.list_append(username, module.host, self.store, day); end if not ok then