<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://hg.omfa.de/prosody-hg/</link>
    <language>en-us</language>

    <title>prosody-hg: util/pubsub.lua history</title>
    <description>util/pubsub.lua revision history</description>
    <item>
    <title>util.pubsub: Recreate intermediate tables if necessary when restoring old subscription state</title>
    <link>http://hg.omfa.de/prosody-hg/log/dbbafef0748f/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Recreate intermediate tables if necessary when restoring old subscription state]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Mon, 25 May 2026 21:14:24 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Use correct table when reverting unsuccessful subscription approval</title>
    <link>http://hg.omfa.de/prosody-hg/log/4f12f98c2ec1/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Use correct table when reverting unsuccessful subscription approval]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Mon, 25 May 2026 21:08:09 +0100</pubDate>
</item>
<item>
    <title>Merge 13.0-&gt;trunk</title>
    <link>http://hg.omfa.de/prosody-hg/log/d975d280baec/util/pubsub.lua</link>
    <description><![CDATA[Merge 13.0-&gt;trunk]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Mon, 25 May 2026 19:01:23 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Ensure deleted node stays in memory store deletion failed</title>
    <link>http://hg.omfa.de/prosody-hg/log/e23b9651145d/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Ensure deleted node stays in memory store deletion failed<br/>
<br/>
This looks like a copy/paste fail. The in-memory representation could get out<br/>
of sync if the storage failed to delete the node (it would report an error,<br/>
but would no longer be listed until a server restart re-read it from storage).]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Mon, 25 May 2026 16:23:45 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Remove JIDs not permitted to be subscribed on affiliation change (fixes #1709)</title>
    <link>http://hg.omfa.de/prosody-hg/log/888d0c52db41/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Remove JIDs not permitted to be subscribed on affiliation change (fixes #1709)<br/>
<br/>
Looks like a copy/paste error.]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Mon, 25 May 2026 16:14:56 +0100</pubDate>
</item>
<item>
    <title>mod_pubsub, util.pubsub: Support for 'authorize' access model</title>
    <link>http://hg.omfa.de/prosody-hg/log/221f3378e7f4/util/pubsub.lua</link>
    <description><![CDATA[mod_pubsub, util.pubsub: Support for 'authorize' access model]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Tue, 31 Mar 2026 14:18:06 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Allow publishers to retract items they published</title>
    <link>http://hg.omfa.de/prosody-hg/log/c8458864dcea/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Allow publishers to retract items they published<br/>
<br/>
This requires the service configuration to provide an iteminfo() callback<br/>
which returns a table of metadata including a 'publisher' field.<br/>
<br/>
Retraction is permitted only if the JID (currently) has permission to publish,<br/>
and they were the publisher of the item.]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Tue, 31 Mar 2026 14:13:32 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Add method returning subset of config as metadata</title>
    <link>http://hg.omfa.de/prosody-hg/log/3b357ab6b6eb/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Add method returning subset of config as metadata<br/>
<br/>
Allows granting read only access to other sets of users using a separate<br/>
access control capability, which makes sense as some properties may be<br/>
intended to be public but read-only.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 08 Nov 2024 02:11:00 +0100</pubDate>
</item>
<item>
    <title>mod_pubsub: Move precondition error wrangling out of util.pubsub</title>
    <link>http://hg.omfa.de/prosody-hg/log/88cab98aa28c/util/pubsub.lua</link>
    <description><![CDATA[mod_pubsub: Move precondition error wrangling out of util.pubsub<br/>
<br/>
Removes dependency on util.error from util.pubsub which was only used<br/>
for this one special case.<br/>
<br/>
Line count reduction!<br/>
<br/>
Would be even nicer if templating could be done by util.error itself.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 29 Oct 2024 14:56:02 +0100</pubDate>
</item>
<item>
    <title>mod_pep: Implement 'roster' (group) access_model</title>
    <link>http://hg.omfa.de/prosody-hg/log/fdd1438d9ef7/util/pubsub.lua</link>
    <description><![CDATA[mod_pep: Implement 'roster' (group) access_model<br/>
<br/>
Allows e.g. restricting your vcard4 to only family or similar.<br/>
<br/>
Notes: This does not include roster groups in the configuration form,<br/>
so the client will have to get them from the actual roster.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 03 Dec 2023 23:19:27 +0100</pubDate>
</item>
<item>
    <title>util: Prefix module imports with prosody namespace</title>
    <link>http://hg.omfa.de/prosody-hg/log/d10957394a3c/util/pubsub.lua</link>
    <description><![CDATA[util: Prefix module imports with prosody namespace]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 17 Mar 2023 16:23:16 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Fix item store resize to &quot;max&quot;</title>
    <link>http://hg.omfa.de/prosody-hg/log/26af75c20163/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Fix item store resize to &quot;max&quot;<br/>
<br/>
Previously this would end up passing the &quot;max&quot; directly to the<br/>
underlying storage.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 06 Jan 2022 01:18:35 +0100</pubDate>
</item>
<item>
    <title>mod_pubsub,mod_pep: Implement 'send_last_published_item' option #1436</title>
    <link>http://hg.omfa.de/prosody-hg/log/b605cbd5f13b/util/pubsub.lua</link>
    <description><![CDATA[mod_pubsub,mod_pep: Implement 'send_last_published_item' option #1436<br/>
<br/>
Default left as 'never' in mod_pubsub to preserve the previous behavior.<br/>
Unclear if this is desirable, but can always be changed later.<br/>
<br/>
In mod_pep this allows turning off the automatic resending of most<br/>
recent item.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 19 Oct 2021 18:11:50 +0200</pubDate>
</item>
<item>
    <title>util.pubsub: Add support for limiting number of items to retrieve</title>
    <link>http://hg.omfa.de/prosody-hg/log/5610f7c5b261/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Add support for limiting number of items to retrieve<br/>
<br/>
Hopefully this will eventually be upgraded to RSM, which is why the<br/>
argument is called 'resultspec' and is a table.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 05 Sep 2021 16:21:10 +0200</pubDate>
</item>
<item>
    <title>util.pubsub: Signal that 'persistent-items' is unsupported when disabled</title>
    <link>http://hg.omfa.de/prosody-hg/log/3ead0967e04d/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Signal that 'persistent-items' is unsupported when disabled<br/>
<br/>
XEP-0060 says that this the way to indicate that 'persistent-items' is<br/>
unsupported, but doesn't explicitly say if it being disabled in the node<br/>
configuration also counts as unsupported.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 22 Jul 2021 19:53:21 +0200</pubDate>
</item>
<item>
    <title>util.pubsub: Fix behavior of persist_items disabled</title>
    <link>http://hg.omfa.de/prosody-hg/log/7a77f0c05382/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Fix behavior of persist_items disabled<br/>
<br/>
When set to 'false' there is no need for a persistence interface at all,<br/>
since items are not persisted after being broadcast.<br/>
<br/>
Had started wondering if maybe the behavior was wrong, after reading<br/>
parts of XEP-0060 that pointed in that direction.<br/>
<br/>
Some discussion of this can be found in logs of<br/>
xmpp:xsf@muc.xmpp.org?join from around 2021-07-20<br/>
<br/>
Thanks to Ralph for confirming.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 22 Jul 2021 21:01:11 +0200</pubDate>
</item>
<item>
    <title>mod_pubsub: Explicitly enable persistence by default to preserve behavior</title>
    <link>http://hg.omfa.de/prosody-hg/log/72512c0858b3/util/pubsub.lua</link>
    <description><![CDATA[mod_pubsub: Explicitly enable persistence by default to preserve behavior<br/>
<br/>
Since nodes were always persistent according to the XEP-0060 definition.<br/>
Whether data is stored in memory or on disk was not what this setting<br/>
was meant for.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 21 Jul 2021 23:35:08 +0200</pubDate>
</item>
<item>
    <title>util.pubsub: Handle absence of node data interface</title>
    <link>http://hg.omfa.de/prosody-hg/log/3986b5a0c3fc/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Handle absence of node data interface<br/>
<br/>
This is in preparation for fixing the behavior of 'persist_items', which<br/>
was misunderstood at some point. In mod_pep it toggles between<br/>
persistent storage and in-memory storage, while the correct behavior<br/>
would be to toggle whether published items are stored at all or<br/>
forgotten after being broadcast.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 21 Jul 2021 21:22:17 +0200</pubDate>
</item>
<item>
    <title>Merge 0.11-&gt;trunk</title>
    <link>http://hg.omfa.de/prosody-hg/log/c471e19a238e/util/pubsub.lua</link>
    <description><![CDATA[Merge 0.11-&gt;trunk]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 16 May 2021 19:05:20 +0200</pubDate>
</item>
<item>
    <title>util.pubsub: Fix traceback if node data not initialized</title>
    <link>http://hg.omfa.de/prosody-hg/log/087b275a9aee/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Fix traceback if node data not initialized<br/>
<br/>
This should not be possible, but a traceback indicating node_data being<br/>
nil here was reported by Ron in the chat.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 16 May 2021 16:02:00 +0200</pubDate>
</item>
<item>
    <title>util.pubsub: Silence luacheck warnings, leaving notes on future proper fix</title>
    <link>http://hg.omfa.de/prosody-hg/log/c5558138ce33/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Silence luacheck warnings, leaving notes on future proper fix]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 23 Dec 2019 21:16:10 +0100</pubDate>
</item>
<item>
    <title>Merge 0.11-&gt;trunk</title>
    <link>http://hg.omfa.de/prosody-hg/log/cbb2c3f8bb1d/util/pubsub.lua</link>
    <description><![CDATA[Merge 0.11-&gt;trunk]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 23 Dec 2019 20:57:10 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Pass subscribers trough a filter callback</title>
    <link>http://hg.omfa.de/prosody-hg/log/641e3b7a6a39/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Pass subscribers trough a filter callback]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 06 Jun 2019 18:13:46 +0200</pubDate>
</item>
<item>
    <title>util.pubsub: Factor out calling of broadcaster</title>
    <link>http://hg.omfa.de/prosody-hg/log/9f50489c2033/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Factor out calling of broadcaster<br/>
<br/>
This will simplify doing things along with broadcasting.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 06 Jun 2019 17:37:15 +0200</pubDate>
</item>
<item>
    <title>util.pubsub, pubsub.lib and tests: Add text to precondition-not-met error (fixes #1455)</title>
    <link>http://hg.omfa.de/prosody-hg/log/0a2d7efca039/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub, pubsub.lib and tests: Add text to precondition-not-met error (fixes #1455)]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Sun, 27 Oct 2019 14:45:57 +0000</pubDate>
</item>
<item>
    <title>util.pubsub: Validate node configuration on node creation (fixes #1328)</title>
    <link>http://hg.omfa.de/prosody-hg/log/ec353524b739/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Validate node configuration on node creation (fixes #1328)]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 03 Mar 2019 19:31:56 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Add support for requesting multiple specific items (needed for #1305)</title>
    <link>http://hg.omfa.de/prosody-hg/log/7f84d7f77a00/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Add support for requesting multiple specific items (needed for #1305)]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 28 Jan 2019 01:41:01 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Restore subscription index from stored data (fixes #1281)</title>
    <link>http://hg.omfa.de/prosody-hg/log/18eca6afb367/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Restore subscription index from stored data (fixes #1281)]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 29 Dec 2018 21:47:51 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Clarify comment about return value</title>
    <link>http://hg.omfa.de/prosody-hg/log/b30455212f89/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Clarify comment about return value]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 21 Oct 2018 22:21:18 +0200</pubDate>
</item>
<item>
    <title>util.pubsub: Allow publishing with a config that should be used as defaults only</title>
    <link>http://hg.omfa.de/prosody-hg/log/038446c50630/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Allow publishing with a config that should be used as defaults only]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Thu, 18 Oct 2018 18:00:54 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Expand comment on return type from get_items</title>
    <link>http://hg.omfa.de/prosody-hg/log/83375ec33619/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Expand comment on return type from get_items]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 01 Sep 2018 00:45:51 +0200</pubDate>
</item>
<item>
    <title>util.pubsub: Explicitly add all capabilities to the 'outcast' affiliation for completeness</title>
    <link>http://hg.omfa.de/prosody-hg/log/885dd6845e62/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Explicitly add all capabilities to the 'outcast' affiliation for completeness]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 31 Aug 2018 17:49:14 +0200</pubDate>
</item>
<item>
    <title>util.pubsub: Comments describing the return values of methods</title>
    <link>http://hg.omfa.de/prosody-hg/log/65c83bfcf2ee/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Comments describing the return values of methods]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 22 Aug 2018 13:27:36 +0200</pubDate>
</item>
<item>
    <title>util.pubsub: Add 'service' field to all events</title>
    <link>http://hg.omfa.de/prosody-hg/log/711fea229e48/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Add 'service' field to all events]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Mon, 27 Aug 2018 14:07:28 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Remove unused argument</title>
    <link>http://hg.omfa.de/prosody-hg/log/c4f9469b203f/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Remove unused argument<br/>
<br/>
I think this was probably a copy-paste mistake.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 21 Aug 2018 19:48:08 +0200</pubDate>
</item>
<item>
    <title>util.pubsub: Fire item-published/&lt;node&gt; to allow for easier handling of per-node items</title>
    <link>http://hg.omfa.de/prosody-hg/log/7e27dc4d100b/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Fire item-published/&lt;node&gt; to allow for easier handling of per-node items]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Sun, 19 Aug 2018 23:37:19 +0100</pubDate>
</item>
<item>
    <title>util.pubsub, pubsub.lib: Improve error on attempt to publish invalid item</title>
    <link>http://hg.omfa.de/prosody-hg/log/76d593b35958/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub, pubsub.lib: Improve error on attempt to publish invalid item]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Sat, 18 Aug 2018 15:26:35 +0100</pubDate>
</item>
<item>
    <title>Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes</title>
    <link>http://hg.omfa.de/prosody-hg/log/33ee40dc3e25/util/pubsub.lua</link>
    <description><![CDATA[Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Sat, 18 Aug 2018 15:10:41 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Fix whitespace [luacheck]</title>
    <link>http://hg.omfa.de/prosody-hg/log/c5a81acc1fc3/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Fix whitespace [luacheck]]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Sat, 18 Aug 2018 14:33:49 +0100</pubDate>
</item>
<item>
    <title>Backed out changeset 27d800ddc3b0 (see below)</title>
    <link>http://hg.omfa.de/prosody-hg/log/c65bfddd3cc5/util/pubsub.lua</link>
    <description><![CDATA[Backed out changeset 27d800ddc3b0 (see below)<br/>
<br/>
It's uncertain whether item not existing should be success and<br/>
nil, or fail with an error.<br/>
<br/>
XEP-0060's &quot;fetch most recent item&quot; actually fetches a list of up<br/>
to N items. N here is a maximum, not a minimum. The feeling is that<br/>
no items is simply an empty list, not a failure of the operation.]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Sat, 18 Aug 2018 14:30:14 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: get_last_item(): Fail with item-not-found if no item yet published</title>
    <link>http://hg.omfa.de/prosody-hg/log/27d800ddc3b0/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: get_last_item(): Fail with item-not-found if no item yet published]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Sat, 18 Aug 2018 14:21:02 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: get_last_item(): Return error if node does not exist</title>
    <link>http://hg.omfa.de/prosody-hg/log/1555ea0d6f61/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: get_last_item(): Return error if node does not exist]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Sat, 18 Aug 2018 14:17:43 +0100</pubDate>
</item>
<item>
    <title>pubsub.lib, util.pubsub: Move precondition checks to util.pubsub</title>
    <link>http://hg.omfa.de/prosody-hg/log/249d90ff992e/util/pubsub.lua</link>
    <description><![CDATA[pubsub.lib, util.pubsub: Move precondition checks to util.pubsub]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Sat, 18 Aug 2018 14:06:56 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Add comment to clarify return values</title>
    <link>http://hg.omfa.de/prosody-hg/log/b6ffd4f951b9/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Add comment to clarify return values]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Sat, 18 Aug 2018 13:23:52 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Pass &quot;retract&quot; as the type of such broadcasts</title>
    <link>http://hg.omfa.de/prosody-hg/log/82fad995a149/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Pass &quot;retract&quot; as the type of such broadcasts<br/>
<br/>
This moves some XEP-0060 awkwardness out of util.pubsub and into mod_pubsub<br/>
<br/>
A retraction is broadcast in an &lt;items&gt; container, whereas most other<br/>
kinds of broadcasts are in a container with a name matching the 'kind'<br/>
attribute.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 16 Aug 2018 14:32:21 +0200</pubDate>
</item>
<item>
    <title>util.pubsub: Allow outcasts to get their subscription status</title>
    <link>http://hg.omfa.de/prosody-hg/log/822e9c5ff4a4/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Allow outcasts to get their subscription status]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Sun, 12 Aug 2018 11:33:22 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: For open nodes, default affiliation is &quot;member&quot;</title>
    <link>http://hg.omfa.de/prosody-hg/log/da154ced7de4/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: For open nodes, default affiliation is &quot;member&quot;<br/>
<br/>
This allows entities without an explicit affiliation to retrieve items,<br/>
which is specified by the XEP. Table 6: &quot;Node Access Models&quot; states that<br/>
for 'open' nodes, &quot;any entity may retrieve items from the node&quot;.<br/>
<br/>
See also discussion at:<br/>
 https://mail.jabber.org/pipermail/standards/2018-August/035320.html]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Thu, 09 Aug 2018 20:27:04 +0100</pubDate>
</item>
<item>
    <title>mod_pep, util.pubsub: Rename restricted-&gt;outcast, none-&gt;member and add new 'none' affiliation to better match XEP-0060</title>
    <link>http://hg.omfa.de/prosody-hg/log/e13a1a0b0107/util/pubsub.lua</link>
    <description><![CDATA[mod_pep, util.pubsub: Rename restricted-&gt;outcast, none-&gt;member and add new 'none' affiliation to better match XEP-0060]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 08 Aug 2018 23:20:07 +0100</pubDate>
</item>
<item>
    <title>mod_pubsub, mod_pep, util.pubsub: Move capability definitions into util.pubsub to avoid duplication</title>
    <link>http://hg.omfa.de/prosody-hg/log/37e814a680ab/util/pubsub.lua</link>
    <description><![CDATA[mod_pubsub, mod_pep, util.pubsub: Move capability definitions into util.pubsub to avoid duplication]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 08 Aug 2018 20:48:02 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Include node defaults from current service object</title>
    <link>http://hg.omfa.de/prosody-hg/log/b40efef8ec99/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Include node defaults from current service object]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 07 Aug 2018 10:52:10 +0200</pubDate>
</item>
<item>
    <title>util.pubsub: Re-check all subscriptions on access_model change, unsubscribing those no longer allowed</title>
    <link>http://hg.omfa.de/prosody-hg/log/db47db788295/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Re-check all subscriptions on access_model change, unsubscribing those no longer allowed]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 06 Aug 2018 17:04:11 +0200</pubDate>
</item>
<item>
    <title>util.pubsub: Add support for publish_model config option</title>
    <link>http://hg.omfa.de/prosody-hg/log/7721794e9e93/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Add support for publish_model config option]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Mon, 06 Aug 2018 11:23:09 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Apply defaults metatable before config check (thanks pep.)</title>
    <link>http://hg.omfa.de/prosody-hg/log/a19fdc6e4f09/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Apply defaults metatable before config check (thanks pep.)<br/>
<br/>
Makes it so that the callback sees the default if it’s not in the form,<br/>
which makes it easier to validate.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 05 Aug 2018 15:17:00 +0200</pubDate>
</item>
<item>
    <title>util.pubsub: Add method to retrieve node configuration</title>
    <link>http://hg.omfa.de/prosody-hg/log/6e42ef9c805c/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Add method to retrieve node configuration]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Sat, 04 Aug 2018 21:32:24 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Use service.node_defaults in case config.node_defaults was not provided (thanks jonasw)</title>
    <link>http://hg.omfa.de/prosody-hg/log/e70b9e8bc443/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Use service.node_defaults in case config.node_defaults was not provided (thanks jonasw)]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Sat, 04 Aug 2018 21:30:10 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Tweak default affiliation of access models (fixes failing test)</title>
    <link>http://hg.omfa.de/prosody-hg/log/e1ca373a7e09/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Tweak default affiliation of access models (fixes failing test)<br/>
<br/>
11:56:59 MattJ&gt; Someone who has the ability to subscribe does not have the &quot;subscriber&quot;<br/>
affiliation until they actually subscribe, they just have the normal &quot;none&quot; affiliation<br/>
(which has permission to subscribe)<br/>
<br/>
11:58:05 MattJ&gt; However if the access model is whitelist, then anyone not on the whitelist<br/>
has an implicit negative affiliation, which we don't currently have, so I just named &quot;restricted&quot;<br/>
<br/>
11:58:16 MattJ&gt; Since it doesn't exist in any code yet, it has no permissions]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Sat, 04 Aug 2018 12:00:46 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Look for a configured callback for more complicated access models</title>
    <link>http://hg.omfa.de/prosody-hg/log/d5bc306e93aa/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Look for a configured callback for more complicated access models]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 04 Aug 2018 03:04:00 +0200</pubDate>
</item>
<item>
    <title>util.pubsub: Add initial support for configurable access models</title>
    <link>http://hg.omfa.de/prosody-hg/log/5639dc1a3f85/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Add initial support for configurable access models]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 04 Aug 2018 03:38:20 +0200</pubDate>
</item>
<item>
    <title>util.pubsub: Add support for a config validation function</title>
    <link>http://hg.omfa.de/prosody-hg/log/46d4322f7eed/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Add support for a config validation function]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 01 Aug 2018 19:18:07 +0100</pubDate>
</item>
<item>
    <title>util.pubsub: Support for returning *all* subscriptions</title>
    <link>http://hg.omfa.de/prosody-hg/log/d1a4b1b78695/util/pubsub.lua</link>
    <description><![CDATA[util.pubsub: Support for returning *all* subscriptions]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 13 Jul 2018 04:41:59 +0200</pubDate>
</item>

  </channel>
</rss>
