# HG changeset patch # User Kim Alvefur # Date 1635983759 -3600 # Node ID e5028f6eb599018b82f95b8e534d50a7b6871d7e # Parent 19f67d44ec37fc572e55f7629287d121981dad4c mod_pep: Prevent creation of services for non-existent users Using a dedicated service should give identical behavior, except for a possible timing difference in the user existence lookup. diff -r 19f67d44ec37 -r e5028f6eb599 plugins/mod_pep.lua --- a/plugins/mod_pep.lua Thu Nov 04 00:36:41 2021 +0100 +++ b/plugins/mod_pep.lua Thu Nov 04 00:55:59 2021 +0100 @@ -9,6 +9,7 @@ local cache = require "util.cache"; local set = require "util.set"; local storagemanager = require "core.storagemanager"; +local usermanager = require "core.usermanager"; local xmlns_pubsub = "http://jabber.org/protocol/pubsub"; local xmlns_pubsub_event = "http://jabber.org/protocol/pubsub#event"; @@ -174,6 +175,17 @@ end end +local nobody_service = pubsub.new({ + service = pubsub.new({ + node_defaults = { + ["max_items"] = 1; + ["persist_items"] = false; + ["access_model"] = "presence"; + ["send_last_published_item"] = "on_sub_and_presence"; + }; + }); +}); + function get_pep_service(username) module:log("debug", "get_pep_service(%q)", username); local user_bare = jid_join(username, host); @@ -181,6 +193,9 @@ if service then return service; end + if not usermanager.user_exists(username, host) then + return nobody_service; + end service = pubsub.new({ pep_username = username; node_defaults = {