Mercurial > prosody-hg
comparison util/pubsub.lua @ 8951:9baac001fccb
util.pubsub: Persist nodes on configuration change
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 01 Jul 2018 04:27:09 +0200 |
| parents | 03ba5b4f131a |
| children | 15bb54f96dd1 |
comparison
equal
deleted
inserted
replaced
| 8950:03ba5b4f131a | 8951:9baac001fccb |
|---|---|
| 485 local node_obj = self.nodes[node]; | 485 local node_obj = self.nodes[node]; |
| 486 if not node_obj then | 486 if not node_obj then |
| 487 return false, "item-not-found"; | 487 return false, "item-not-found"; |
| 488 end | 488 end |
| 489 | 489 |
| 490 if new_config["persist_items"] ~= node_obj.config["persist_items"] then | 490 local old_config = node_obj.config; |
| 491 node_obj.config = setmetatable(new_config, {__index=self.node_defaults}); | |
| 492 | |
| 493 if self.config.nodestore then | |
| 494 local ok, err = save_node_to_store(self, node_obj); | |
| 495 if not ok then | |
| 496 node_obj.config = old_config; | |
| 497 return ok, "internal-server-error"; | |
| 498 end | |
| 499 end | |
| 500 | |
| 501 if old_config["persist_items"] ~= node_obj.config["persist_items"] then | |
| 491 self.data[node] = self.config.itemstore(self.nodes[node].config, node); | 502 self.data[node] = self.config.itemstore(self.nodes[node].config, node); |
| 492 elseif new_config["max_items"] ~= node_obj.config["max_items"] then | 503 elseif old_config["max_items"] ~= node_obj.config["max_items"] then |
| 493 self.data[node]:resize(new_config["max_items"]); | 504 self.data[node]:resize(self.nodes[node].config["max_items"]); |
| 494 end | 505 end |
| 495 | |
| 496 node_obj.config = setmetatable(new_config, {__index=self.node_defaults}); | |
| 497 | 506 |
| 498 return true; | 507 return true; |
| 499 end | 508 end |
| 500 | 509 |
| 501 return { | 510 return { |
