Mercurial > prosody-hg
comparison util/pubsub.lua @ 9138:db47db788295
util.pubsub: Re-check all subscriptions on access_model change, unsubscribing those no longer allowed
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Mon, 06 Aug 2018 17:04:11 +0200 |
| parents | 7721794e9e93 |
| children | b40efef8ec99 |
comparison
equal
deleted
inserted
replaced
| 9137:4803d2feeecb | 9138:db47db788295 |
|---|---|
| 596 node_obj.config = old_config; | 596 node_obj.config = old_config; |
| 597 return ok, "internal-server-error"; | 597 return ok, "internal-server-error"; |
| 598 end | 598 end |
| 599 end | 599 end |
| 600 | 600 |
| 601 if old_config["access_model"] ~= node_obj.config["access_model"] then | |
| 602 for subscriber in pairs(node_obj.subscribers) do | |
| 603 if not self:may(node, subscriber, "be_subscribed") then | |
| 604 local ok, err = self:remove_subscription(node, true, subscriber); | |
| 605 if not ok then | |
| 606 node_obj.config = old_config; | |
| 607 return ok, err; | |
| 608 end | |
| 609 end | |
| 610 end | |
| 611 end | |
| 612 | |
| 601 if old_config["persist_items"] ~= node_obj.config["persist_items"] then | 613 if old_config["persist_items"] ~= node_obj.config["persist_items"] then |
| 602 self.data[node] = self.config.itemstore(self.nodes[node].config, node); | 614 self.data[node] = self.config.itemstore(self.nodes[node].config, node); |
| 603 elseif old_config["max_items"] ~= node_obj.config["max_items"] then | 615 elseif old_config["max_items"] ~= node_obj.config["max_items"] then |
| 604 self.data[node]:resize(self.nodes[node].config["max_items"]); | 616 self.data[node]:resize(self.nodes[node].config["max_items"]); |
| 605 end | 617 end |
