Software /
code /
prosody
Diff
util/pubsub.lua @ 10356:0a2d7efca039
util.pubsub, pubsub.lib and tests: Add text to precondition-not-met error (fixes #1455)
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sun, 27 Oct 2019 14:45:57 +0000 |
parent | 9840:ec353524b739 |
child | 10521:cbb2c3f8bb1d |
line wrap: on
line diff
--- a/util/pubsub.lua Sun Oct 20 23:47:48 2019 +0200 +++ b/util/pubsub.lua Sun Oct 27 14:45:57 2019 +0000 @@ -1,5 +1,6 @@ local events = require "util.events"; local cache = require "util.cache"; +local errors = require "util.error"; local service_mt = {}; @@ -510,7 +511,7 @@ end for config_field, value in pairs(required_config) do if node_config[config_field] ~= value then - return false; + return false, config_field; end end return true; @@ -546,8 +547,13 @@ node_obj = self.nodes[node]; elseif requested_config and not requested_config._defaults_only then -- Check that node has the requested config before we publish - if not check_preconditions(node_obj.config, requested_config) then - return false, "precondition-not-met"; + local ok, field = check_preconditions(node_obj.config, requested_config); + if not ok then + local err = errors.new({ + type = "cancel", condition = "conflict", text = "Field does not match: "..field; + }); + err.pubsub_condition = "precondition-not-met"; + return false, err; end end if not self.config.itemcheck(item) then