Software /
code /
prosody
Changeset
8496:9b81c22d5b54
rostermanager: Explicitly remove old-style 'pending' table from rosters (or it stays forever due to map stores)
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 29 Dec 2017 20:49:19 +0100 |
parents | 8494:4f75f4da6d4e |
children | 8497:b703f56b8194 8508:47115b0ca133 |
files | core/rostermanager.lua |
diffstat | 1 files changed, 8 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/core/rostermanager.lua Thu Dec 28 17:32:56 2017 +0100 +++ b/core/rostermanager.lua Fri Dec 29 20:49:19 2017 +0100 @@ -112,7 +112,15 @@ local data, err = roster_store:get(username); roster = data or {}; if user then user.roster = roster; end + local legacy_pending = roster.pending and type(roster.pending.subscription) ~= "string"; roster_metadata(roster, err); + if legacy_pending then + -- Due to map store use, we need to manually delete this entry + log("debug", "Removing legacy 'pending' entry"); + if not save_roster(username, host, roster, "pending") then + log("warn", "Could not remove legacy 'pendig' entry"); + end + end if roster[jid] then roster[jid] = nil; log("debug", "Roster for %s had a self-contact, removing", jid);