<?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: plugins/mod_smacks.lua history</title>
    <description>plugins/mod_smacks.lua revision history</description>
    <item>
    <title>mod_c2s, mod_smacks: Refactor session/connection cleanup</title>
    <link>http://hg.omfa.de/prosody-hg/log/1d028f9473c2/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_c2s, mod_smacks: Refactor session/connection cleanup<br/>
<br/>
mod_smacks was preventing mod_c2s cleanup by directly modifying the mod_c2s<br/>
sessions table. It did this to avoid mod_c2s trying to destroy the session<br/>
when the connection was closed.<br/>
<br/>
The code that does IP counting in mod_limits was experiencing counter drift,<br/>
likely because of mod_smacks disassociating the session from the connection<br/>
before the c2s-closed event is fired.<br/>
<br/>
This change has mod_c2s skip the session cleanup if it sees the 'hibernating'<br/>
property is set on the session. This is a less invasive way of performing the<br/>
same thing. Importantly, c2s-closed still gets to run and fire with the<br/>
original session object.<br/>
<br/>
It might be desirable to remove the 'hibernating' check here and switch to a<br/>
more generic event-driven design (where mod_smacks can inhibit cleanup by<br/>
adding an event handler). This change was deemed too large for a minor<br/>
release, but may be made in 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>Tue, 21 Apr 2026 16:22:43 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Remove extra optional from sm element</title>
    <link>http://hg.omfa.de/prosody-hg/log/5f8a9e50c2fb/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Remove extra optional from sm element<br/>
<br/>
Since XEP-0198 version 1.6.3, the optional and required children of sm in<br/>
stream:features have been removed entirely.  They already weren’t specified<br/>
before, and were only leftover from a very old version in the XML Schema.<br/>
<br/>
Fixes #1963]]></description>
    <author>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</author>
    <pubDate>Tue, 02 Sep 2025 00:50:25 +0200</pubDate>
</item>
<item>
    <title>mod_smacks: Run session destruction code in session's async context</title>
    <link>http://hg.omfa.de/prosody-hg/log/5d8fc1c4eb7c/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Run session destruction code in session's async context<br/>
<br/>
This is the Right Thing and should fix various potential issues and race<br/>
conditions.]]></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, 21 Nov 2024 17:02:55 +0000</pubDate>
</item>
<item>
    <title>mod_smacks: Fix previous commit for case of no session found</title>
    <link>http://hg.omfa.de/prosody-hg/log/9277fc78fe39/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Fix previous commit for case of no session found]]></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 Nov 2024 00:57:24 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Prevent traceback on attempting to resume destroyed session</title>
    <link>http://hg.omfa.de/prosody-hg/log/d9965707f7dc/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Prevent traceback on attempting to resume destroyed session<br/>
<br/>
This shouldn't be possible, but seems to happen anyway after net.server<br/>
somehow calling the close handler twice, which also should not happen.]]></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 Nov 2024 00:53:01 +0100</pubDate>
</item>
<item>
    <title>Merge 0.12-&gt;trunk</title>
    <link>http://hg.omfa.de/prosody-hg/log/0aae6de9d323/plugins/mod_smacks.lua</link>
    <description><![CDATA[Merge 0.12-&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>Sat, 02 Nov 2024 22:33:38 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Destroy timed out session in async context (fixes #1884)</title>
    <link>http://hg.omfa.de/prosody-hg/log/01d2abc3d17c/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Destroy timed out session in async context (fixes #1884)<br/>
<br/>
Prevents ASYNC-01 due to storage interactions in a timer.<br/>
<br/>
Also considered modifying mod_c2s to allow passing arbitrary closures<br/>
into its runner thread but this seems like a big step away from the<br/>
current code for just this module.<br/>
<br/>
Also considered creating a dedicated runner in mod_smacks, but ensuring<br/>
continuity across module reloads might be tricky.<br/>
<br/>
We could further improve this in the next major version.]]></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, 02 Nov 2024 18:10:25 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Adjust buckets for resumption age statistic</title>
    <link>http://hg.omfa.de/prosody-hg/log/41a587613a0e/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Adjust buckets for resumption age statistic<br/>
<br/>
Given that there are recommendations floating around recommending 24<br/>
hours session lifetime, having buckets up to 10 minutes wouldn't be<br/>
useful in that case.<br/>
<br/>
Would be nice if we had some way to automatically assign suitable number<br/>
series for buckets, scaled to what the configuration might be.]]></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, 16 Feb 2024 00:15:36 +0100</pubDate>
</item>
<item>
    <title>plugins: Use integer config API with interval specification where sensible</title>
    <link>http://hg.omfa.de/prosody-hg/log/50324f66ca2a/plugins/mod_smacks.lua</link>
    <description><![CDATA[plugins: Use integer config API with interval specification where sensible<br/>
<br/>
Many of these fall into a few categories:<br/>
- util.cache size, must be &gt;= 1<br/>
- byte or item counts that logically can't be negative<br/>
- port numbers that should be in 1..0xffff]]></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, 17 Jul 2023 01:38:54 +0200</pubDate>
</item>
<item>
    <title>plugins: Switch to :get_option_period() for time range options</title>
    <link>http://hg.omfa.de/prosody-hg/log/c8d949cf6b09/plugins/mod_smacks.lua</link>
    <description><![CDATA[plugins: Switch to :get_option_period() for time range options<br/>
<br/>
Improves readability (&quot;1 day&quot; vs 86400) and centralizes validation.]]></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 Jul 2023 20:49:33 +0200</pubDate>
</item>
<item>
    <title>Merge 0.12-&gt;trunk</title>
    <link>http://hg.omfa.de/prosody-hg/log/cbe58f747d48/plugins/mod_smacks.lua</link>
    <description><![CDATA[Merge 0.12-&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>Tue, 04 Apr 2023 08:55:15 +0200</pubDate>
</item>
<item>
    <title>mod_smacks: Replace existing watchdog when starting hibernation</title>
    <link>http://hg.omfa.de/prosody-hg/log/a313b7260145/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Replace existing watchdog when starting hibernation<br/>
<br/>
There shouldn't be one here but if there is, for some reason, it's<br/>
better to close it than have it around to wake up and possibly try to<br/>
destroy the session.]]></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, 02 Apr 2023 10:40:48 +0200</pubDate>
</item>
<item>
    <title>mod_smacks: Fix stray watchdog closing sessions</title>
    <link>http://hg.omfa.de/prosody-hg/log/14ca500f8621/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Fix stray watchdog closing sessions<br/>
<br/>
Unsure exactly how this happens, but sometimes a watchdog appears to<br/>
close a session that isn't hibernating, or hasn't hibernating long<br/>
enough.]]></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, 02 Apr 2023 10:37:44 +0200</pubDate>
</item>
<item>
    <title>plugins: Prefix module imports with prosody namespace</title>
    <link>http://hg.omfa.de/prosody-hg/log/74b9e05af71e/plugins/mod_smacks.lua</link>
    <description><![CDATA[plugins: 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, 24 Mar 2023 13:15:28 +0100</pubDate>
</item>
<item>
    <title>Merge 0.12-&gt;trunk</title>
    <link>http://hg.omfa.de/prosody-hg/log/ffa75a9ce907/plugins/mod_smacks.lua</link>
    <description><![CDATA[Merge 0.12-&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>Thu, 19 Jan 2023 21:14:31 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Log something when hibernation starts</title>
    <link>http://hg.omfa.de/prosody-hg/log/101c758428aa/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Log something when hibernation starts<br/>
<br/>
Will hopefully save future confusion about sessions being destroyed when<br/>
they are in fact not.]]></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, 19 Jan 2023 20:59:28 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Factor out resumption token table key generation</title>
    <link>http://hg.omfa.de/prosody-hg/log/2e12290820e8/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Factor out resumption token table key generation<br/>
<br/>
So that happens in a single place, where it can be changed easier.]]></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, 13 Nov 2022 19:44:53 +0100</pubDate>
</item>
<item>
    <title>Merge 0.12-&gt;trunk</title>
    <link>http://hg.omfa.de/prosody-hg/log/4a8740e01813/plugins/mod_smacks.lua</link>
    <description><![CDATA[Merge 0.12-&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, 12 Dec 2022 07:10:54 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Only track resumable sessions</title>
    <link>http://hg.omfa.de/prosody-hg/log/06ba2f8cee47/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Only track resumable sessions<br/>
<br/>
Required due to track_session() having moved here]]></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, 18 Nov 2022 16:18:47 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Disable resumption behavior on s2s</title>
    <link>http://hg.omfa.de/prosody-hg/log/d7853bbc88ea/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Disable resumption behavior on s2s<br/>
<br/>
Since resumption is not supported on s2s currently, there is no point in<br/>
allocating resumption tokens.  The code that removes entries from<br/>
session_registry is only invoked for c2s sessions, thus enabling<br/>
resumable smacks on s2s adds an entry that never goes away.]]></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, 13 Nov 2022 18:16:59 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Change boolean attribute from '1' to 'true' for compatibility</title>
    <link>http://hg.omfa.de/prosody-hg/log/2cbf0e9314ff/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Change boolean attribute from '1' to 'true' for compatibility<br/>
<br/>
Conversations 2.10.10 and earlier expect this to be literally 'true' and don't<br/>
recognise '1'. This leads to it not attempting resumption with Prosody at all<br/>
since this change was introduced in 36ba170c4fd0.<br/>
<br/>
Thanks to Zash for noticing, debugging and diagnosing this issue.<br/>
<br/>
This issue is fixed in Conversations commit 052c58f3 (unreleased at the time<br/>
of writing).]]></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>Fri, 07 Oct 2022 11:35:56 +0100</pubDate>
</item>
<item>
    <title>Backed out changeset 1bc2220cd6ec</title>
    <link>http://hg.omfa.de/prosody-hg/log/0dc80024fdd2/plugins/mod_smacks.lua</link>
    <description><![CDATA[Backed out changeset 1bc2220cd6ec<br/>
<br/>
The use of the error helpers creates an `&lt;error/&gt;` child element<br/>
containing the error condition. This is however not allowed as per<br/>
XEP-0198, which specifies that the error condition is to be a direct<br/>
child of the `&lt;failed/&gt;` stream management element.<br/>
<br/>
This has triggered a fun reconnect loop in aioxmpp where it was<br/>
reported by a user [1].<br/>
<br/>
   [1]: https://github.com/horazont/aioxmpp/issues/382]]></description>
    <author>&#74;&#111;&#110;&#97;&#115;&#32;&#83;&#99;&#104;&#228;&#102;&#101;&#114;&#32;&#60;&#106;&#111;&#110;&#97;&#115;&#64;&#119;&#105;&#101;&#108;&#105;&#99;&#107;&#105;&#46;&#110;&#97;&#109;&#101;&#62;</author>
    <pubDate>Mon, 03 Oct 2022 12:55:11 +0200</pubDate>
</item>
<item>
    <title>mod_smacks: Set session flag during successful enable</title>
    <link>http://hg.omfa.de/prosody-hg/log/0a137436490f/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Set session flag during successful enable]]></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, 03 Sep 2022 21:20:29 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Add type field to results so actions can be later distinguished</title>
    <link>http://hg.omfa.de/prosody-hg/log/268b1a9162a9/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Add type field to results so actions can be later distinguished]]></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, 03 Sep 2022 21:20:07 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Set session.smacks after sending &lt;enabled/&gt; to fix traceback</title>
    <link>http://hg.omfa.de/prosody-hg/log/90d90b540b6b/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Set session.smacks after sending &lt;enabled/&gt; to fix traceback<br/>
<br/>
...with opportunistic writes enabled.]]></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, 29 Aug 2022 15:58:51 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Use new :add_error() in last remaining error result construction</title>
    <link>http://hg.omfa.de/prosody-hg/log/1bc2220cd6ec/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Use new :add_error() in last remaining error result construction]]></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, 29 Aug 2022 15:48:07 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Split enable handling to stages, to allow easier SASL2 integration</title>
    <link>http://hg.omfa.de/prosody-hg/log/36ba170c4fd0/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Split enable handling to stages, to allow easier SASL2 integration]]></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, 29 Aug 2022 15:45:52 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Split resumption into multiple stages, to simplify ISR integration</title>
    <link>http://hg.omfa.de/prosody-hg/log/464a22f2751c/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Split resumption into multiple stages, to simplify ISR integration<br/>
<br/>
This will allow us to return the success/failed as part of the SASL2 response,<br/>
and *then* perform the stanza sync as a second step.]]></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>Fri, 26 Aug 2022 19:07:36 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Don't close resuming session when failed due to overflow</title>
    <link>http://hg.omfa.de/prosody-hg/log/5a61e1603f42/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Don't close resuming session when failed due to overflow]]></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>Fri, 26 Aug 2022 17:28:06 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Long overdue cleanup of resumption code, fixes some old TODOs</title>
    <link>http://hg.omfa.de/prosody-hg/log/3b9771d496ed/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Long overdue cleanup of resumption code, fixes some old TODOs]]></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>Fri, 26 Aug 2022 17:04:15 +0100</pubDate>
</item>
<item>
    <title>Merge 0.12-&gt;trunk</title>
    <link>http://hg.omfa.de/prosody-hg/log/12962a1001c2/plugins/mod_smacks.lua</link>
    <description><![CDATA[Merge 0.12-&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, 13 Jun 2022 19:17:36 +0200</pubDate>
</item>
<item>
    <title>mod_smacks: Fix #1761 by setting a flag earlier</title>
    <link>http://hg.omfa.de/prosody-hg/log/3729a6bdb562/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Fix #1761 by setting a flag earlier<br/>
<br/>
This ensures that the flag is set even if the pre-drain callback is<br/>
called from send(), as would be the case if opportunistic writes are<br/>
enabled.]]></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, 12 Jun 2022 01:50:33 +0200</pubDate>
</item>
<item>
    <title>mod_smacks: Indicate that bounces are generated by the server</title>
    <link>http://hg.omfa.de/prosody-hg/log/8e780079a424/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Indicate that bounces are generated by the server<br/>
<br/>
Could arguably be implied by 'recipient-unavailable' since if it was<br/>
available, this error wouldn't happen.]]></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, 27 May 2022 14:54:32 +0200</pubDate>
</item>
<item>
    <title>Merge 0.12-&gt;trunk</title>
    <link>http://hg.omfa.de/prosody-hg/log/923d6fe5ee41/plugins/mod_smacks.lua</link>
    <description><![CDATA[Merge 0.12-&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>Fri, 27 May 2022 15:08:55 +0200</pubDate>
</item>
<item>
    <title>mod_smacks: Bounce unhandled stanzas from local origin (fix #1759)</title>
    <link>http://hg.omfa.de/prosody-hg/log/252ed01896dd/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Bounce unhandled stanzas from local origin (fix #1759)<br/>
<br/>
Sending stanzas with a remote session as origin when the stanzas have a<br/>
local JID in the from attribute trips validation in core.stanza_router,<br/>
leading to warnings:<br/>
&gt; Received a stanza claiming to be from remote.example, over a stream authed for localhost.example<br/>
<br/>
Using module:send() uses the local host as origin, which is fine here.]]></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, 27 May 2022 14:45:35 +0200</pubDate>
</item>
<item>
    <title>mod_smacks: Fix bounce of stanzas directed to full JID on unclean disconnect</title>
    <link>http://hg.omfa.de/prosody-hg/log/8087f5357f53/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Fix bounce of stanzas directed to full JID on unclean disconnect<br/>
<br/>
Fixes #1758<br/>
<br/>
Introduced in 1ea01660c79a<br/>
<br/>
In e62025f949f9 to and from was inverted since it changed from acting on<br/>
a reply to acting on the original stanza (or a clone thereof)<br/>
<br/>
Unsure of the purpose of this check, you don't usually send stanzas to<br/>
your own full JID. Perhaps guarding against routing loops?<br/>
<br/>
The check was present in the original commit of mod_smacks,<br/>
prosody-modules rev 9a7671720dec]]></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, 27 May 2022 12:05:47 +0200</pubDate>
</item>
<item>
    <title>mod_smacks: Remove debug log references to timer (not used anymore)</title>
    <link>http://hg.omfa.de/prosody-hg/log/dd5ab9a6b599/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Remove debug log references to timer (not used anymore)<br/>
<br/>
Cuts down on noise as well]]></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, 26 May 2022 19:24:01 +0200</pubDate>
</item>
<item>
    <title>Merge 0.12-&gt;trunk</title>
    <link>http://hg.omfa.de/prosody-hg/log/d2177cb5a766/plugins/mod_smacks.lua</link>
    <description><![CDATA[Merge 0.12-&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>Thu, 26 May 2022 17:48:59 +0200</pubDate>
</item>
<item>
    <title>mod_smacks: Fix to use current method of counting acked stanzas</title>
    <link>http://hg.omfa.de/prosody-hg/log/1671cb924002/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Fix to use current method of counting acked stanzas<br/>
<br/>
Fixes #1757<br/>
<br/>
These places seem to have been left since e62025f949f9<br/>
<br/>
The logic around expected_h in should_ack() misbehaved, always comparing<br/>
with 0 + unacked instead of acked + unacked.]]></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, 26 May 2022 17:38:55 +0200</pubDate>
</item>
<item>
    <title>mod_smacks: Use session logging for remaining log messages</title>
    <link>http://hg.omfa.de/prosody-hg/log/d935af51c644/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Use session logging for remaining log messages<br/>
<br/>
For consistency and easier correlation of session events.]]></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, 21 May 2022 13:11:25 +0200</pubDate>
</item>
<item>
    <title>mod_smacks: Factor out some convenience functions</title>
    <link>http://hg.omfa.de/prosody-hg/log/73ee3855f970/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Factor out some convenience functions<br/>
<br/>
Those lines are long and the risk of mistakes if another one needs to be<br/>
added seems high, but lower when factored out like this.]]></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, 11 Feb 2022 16:09:42 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Initialize queue before sending &lt;enable&gt;</title>
    <link>http://hg.omfa.de/prosody-hg/log/c589874fe348/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Initialize queue before sending &lt;enable&gt;<br/>
<br/>
Setting the .smacks field enables code paths that expects the queue to<br/>
be present.  The queue is initialized in wrap_session_out().  With<br/>
opportunistic writes enabled this happens immediately on .sends2s(), so<br/>
the sending &lt;enable&gt; must happen before OR after these two lines, not in<br/>
the middle.]]></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, 15 May 2022 16:12:34 +0200</pubDate>
</item>
<item>
    <title>mod_smacks: Improve activation of smacks on outgoing s2s</title>
    <link>http://hg.omfa.de/prosody-hg/log/a3b12eeedd4b/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Improve activation of smacks on outgoing s2s<br/>
<br/>
Using a timer was a hack to get around that stream features are not<br/>
available at the right time and sendq stanzas were stored as strings<br/>
so could not be counted properly. The later has now been fixed and the<br/>
former is fixed by recording the relevant stream feature on the session<br/>
so that the correct version of XEP-0198 can be activated once the<br/>
connection has been authenticated and is ready to start.]]></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, 24 Apr 2022 16:17:32 +0200</pubDate>
</item>
<item>
    <title>mod_smacks: Tweak resumption age buckets towards multiples of 60</title>
    <link>http://hg.omfa.de/prosody-hg/log/fe0f5c47fda3/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Tweak resumption age buckets towards multiples of 60<br/>
<br/>
This seems like the thing to do for time, which is usually divided into<br/>
divisors divisible by 60, or multiplied by multiples of 60]]></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, 04 Feb 2022 22:11:14 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Log error to silence luacheck</title>
    <link>http://hg.omfa.de/prosody-hg/log/4e61aaa4e9b2/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Log error to silence luacheck]]></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 Dec 2021 00:59:10 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Limit &quot;old&quot; session resumption counters</title>
    <link>http://hg.omfa.de/prosody-hg/log/6366240d2edb/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Limit &quot;old&quot; session resumption counters<br/>
<br/>
Doing this when creating a whole new session seems reasonable because it<br/>
is already expensive and this is when it may be adding to the old<br/>
session store, while a successful resumption should be plus-minus zero.]]></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 Dec 2021 00:48:38 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Record timestamp with persisted counters</title>
    <link>http://hg.omfa.de/prosody-hg/log/fa804c2db747/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Record timestamp with persisted counters<br/>
<br/>
For future cleanup routine when people inevitably complain about this<br/>
data being stored there forever]]></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 Dec 2021 00:18:13 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: sprinkle some metrics on it</title>
    <link>http://hg.omfa.de/prosody-hg/log/649268c9f603/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: sprinkle some metrics on it]]></description>
    <author>&#74;&#111;&#110;&#97;&#115;&#32;&#83;&#99;&#104;&#228;&#102;&#101;&#114;&#32;&#60;&#106;&#111;&#110;&#97;&#115;&#64;&#119;&#105;&#101;&#108;&#105;&#99;&#107;&#105;&#46;&#110;&#97;&#109;&#101;&#62;</author>
    <pubDate>Mon, 27 Dec 2021 16:16:53 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Compact code using new stanza API</title>
    <link>http://hg.omfa.de/prosody-hg/log/e32f90c81519/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Compact code using new stanza API]]></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 Dec 2021 22:13:03 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Use more compact resumption tokens</title>
    <link>http://hg.omfa.de/prosody-hg/log/08a949e63541/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Use more compact resumption tokens<br/>
<br/>
UUID seems like insane overkill for something user-scoped and not<br/>
security-sensitive. All that is needed is to avoid conflicts among what<br/>
should be relatively long-lived sessions.]]></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 Dec 2021 18:47:45 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Add future todo</title>
    <link>http://hg.omfa.de/prosody-hg/log/6cc3135138d7/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Add future todo<br/>
<br/>
The vision: All the queueing and counting and session replacement logic<br/>
in core, with mod_smacks only hooking this up to the XEP-0198 protocol.]]></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, 20 Dec 2021 00:21:04 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Only include max resumption time when resumption is activated</title>
    <link>http://hg.omfa.de/prosody-hg/log/9744a0ceb767/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Only include max resumption time when resumption is activated]]></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, 20 Dec 2021 00:18:47 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Fix typos</title>
    <link>http://hg.omfa.de/prosody-hg/log/2c13aaae35ac/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Fix typos]]></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, 20 Dec 2021 00:06:47 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Fix error on shutdown if loaded on Component</title>
    <link>http://hg.omfa.de/prosody-hg/log/061d516d8ac5/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Fix error on shutdown if loaded on Component]]></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, 20 Dec 2021 00:04:32 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Fix typo (thanks codespell)</title>
    <link>http://hg.omfa.de/prosody-hg/log/ad1fe36eaae7/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Fix typo (thanks codespell)]]></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, 19 Dec 2021 15:00:22 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Avoid log noise when a non-smacks session is closed</title>
    <link>http://hg.omfa.de/prosody-hg/log/9f4d88f54a54/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Avoid log noise when a non-smacks session is closed]]></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, 19 Dec 2021 14:59:27 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Check if session was really sleeping before logging message</title>
    <link>http://hg.omfa.de/prosody-hg/log/b892f5489d79/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Check if session was really sleeping before logging message<br/>
<br/>
It could have been resumed without going into hibernation first, i.e.<br/>
when the client notices the disconnect before the server, or if it<br/>
switches networks etc.]]></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, 18 Dec 2021 15:45:06 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Fix traceback when bouncing unacked stanzas</title>
    <link>http://hg.omfa.de/prosody-hg/log/4cbe7979a92a/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Fix traceback when bouncing unacked stanzas<br/>
<br/>
Errors sent from handle_unacked_stanzas() should usually not be sent to<br/>
the session itself, but if one is, it should not be queued.]]></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, 18 Dec 2021 13:58:33 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Fix duplicate sleep behavior when replacing a session</title>
    <link>http://hg.omfa.de/prosody-hg/log/ef0f174488af/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Fix duplicate sleep behavior when replacing a session<br/>
<br/>
Fixes that an extra watchdog was set, leaking the previous one, which<br/>
went on to do behave as if the session times out.]]></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, 18 Dec 2021 13:48:57 +0100</pubDate>
</item>
<item>
    <title>mod_smacks: Remove references to connection on hibernation</title>
    <link>http://hg.omfa.de/prosody-hg/log/e662c172ea0f/plugins/mod_smacks.lua</link>
    <description><![CDATA[mod_smacks: Remove references to connection on hibernation<br/>
<br/>
Still having the connection on the session may cause unintentional<br/>
behavior, such as the session being treated as if connected, even tho<br/>
the connection has been closed.]]></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, 18 Dec 2021 12:50:53 +0100</pubDate>
</item>

  </channel>
</rss>
