aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2024-11-08 10:24:42 +0000
committerMatthew Wild <mwild1@gmail.com>2024-11-08 10:24:42 +0000
commitf8c85b7c1e1343176004c52ea3e745053274639f (patch)
tree8df29ecda6fb1fdf5a17bd875452d8350da78a4d
parent2c61955e3aa384926c02322505e22cb446c333d5 (diff)
downloadprosody-f8c85b7c1e1343176004c52ea3e745053274639f.tar.gz
prosody-f8c85b7c1e1343176004c52ea3e745053274639f.zip
mod_bookmarks: Suppress error publishing empty legacy bookmarks w/ no PEP node
It appears that when: 1) The user has no bookmarks 2 node in PEP 2) The client publishes an empty bookmark set to a legacy bookmarks location 3) mod_bookmarks will attempt to purge items from the non-existent node and log an error about the failure (item-not-found). This new code will suppress an item-not-found error from the purge operation in the empty-bookmarks case, and adds a log message for any other error (this is helpful because the existing log message confusingly says it was an error *publishing* to the node, which isn't always accurate).
-rw-r--r--plugins/mod_bookmarks.lua11
1 files changed, 8 insertions, 3 deletions
diff --git a/plugins/mod_bookmarks.lua b/plugins/mod_bookmarks.lua
index d67915f8..8fe3166a 100644
--- a/plugins/mod_bookmarks.lua
+++ b/plugins/mod_bookmarks.lua
@@ -167,10 +167,15 @@ local function publish_to_pep(jid, bookmarks, synchronise)
if synchronise then
-- If we set zero legacy bookmarks, purge the bookmarks 2 node.
module:log("debug", "No bookmark in the set, purging instead.");
- return service:purge(namespace, jid, true);
- else
- return true;
+ local ok, err = service:purge(namespace, jid, true);
+ -- It's okay if no node exists when purging, user has
+ -- no bookmarks anyway.
+ if not ok and err ~= "item-not-found" then
+ module:log("error", "Failed to clear items from bookmarks 2 node: %s", err);
+ return ok, err;
+ end
end
+ return true;
end
-- Retrieve the current bookmarks2.