Software /
code /
prosody-modules
Annotate
mod_smacks/README.markdown @ 2494:d300ae5dba87
mod_smacks: Fix some bugs with smacks-ack-delayed event triggering.
The old code had several flaws which are addressed here.
First of all this fixes the if statement guarding the event generation
There where some timing glitches addressed by this commit as well.
author | tmolitor <thilo@eightysoft.de> |
---|---|
date | Sun, 12 Feb 2017 21:23:22 +0100 |
parent | 2394:4c27ebcf4cbd |
child | 2503:7036a6e074d7 |
rev | line source |
---|---|
1803
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
1 --- |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
2 labels: |
2154
ada71b81425a
mod_smacks/README: Too buggy for a "Beta" label
Kim Alvefur <zash@zash.se>
parents:
2063
diff
changeset
|
3 - 'Stage-Alpha' |
1803
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
4 summary: 'XEP-0198: Reliability and fast reconnects for XMPP' |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
5 ... |
1782 | 6 |
1803
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
7 Introduction |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
8 ============ |
1782 | 9 |
1803
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
10 By default XMPP is as reliable as your network is. Unfortunately in some |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
11 cases that is not very reliable - in some network conditions disconnects |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
12 can be frequent and message loss can occur. |
1782 | 13 |
1803
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
14 To overcome this, XMPP has an optional extension (XEP-0198: Stream |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
15 Management) which, when supported by both the client and server, can |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
16 allow a client to resume a disconnected session, and prevent message |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
17 loss. |
1782 | 18 |
1803
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
19 Details |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
20 ======= |
1782 | 21 |
1803
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
22 When using XEP-0198 both the client and the server keep a queue of the |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
23 most recently sent stanzas - this is cleared when the other end |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
24 acknowledges they have received the stanzas. If the client disconnects, |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
25 instead of marking the user offline the server pretends the client is |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
26 still online for a short (configurable) period of time. If the client |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
27 reconnects within this period, any stanzas in the queue that the client |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
28 did not receive are re-sent. |
1782 | 29 |
1803
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
30 If the client fails to reconnect before the timeout then it is marked |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
31 offline as normal, and any stanzas in the queue are returned to the |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
32 sender as a "recipient-unavailable" error. |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
33 |
2394
4c27ebcf4cbd
mod_smacks: added new event "smacks-ack-delayed" used by mod_cloud_notify and extended the readme file accordingly (also mention mod_smacks_offline and mod_smacks_noerror in readme file)
tmolitor <thilo@eightysoft.de>
parents:
2154
diff
changeset
|
34 If you don't want this behaviour on timeout you can use [mod_smacks_offline] |
4c27ebcf4cbd
mod_smacks: added new event "smacks-ack-delayed" used by mod_cloud_notify and extended the readme file accordingly (also mention mod_smacks_offline and mod_smacks_noerror in readme file)
tmolitor <thilo@eightysoft.de>
parents:
2154
diff
changeset
|
35 or [mod_smacks_noerror] to customize the behaviour further. |
4c27ebcf4cbd
mod_smacks: added new event "smacks-ack-delayed" used by mod_cloud_notify and extended the readme file accordingly (also mention mod_smacks_offline and mod_smacks_noerror in readme file)
tmolitor <thilo@eightysoft.de>
parents:
2154
diff
changeset
|
36 |
4c27ebcf4cbd
mod_smacks: added new event "smacks-ack-delayed" used by mod_cloud_notify and extended the readme file accordingly (also mention mod_smacks_offline and mod_smacks_noerror in readme file)
tmolitor <thilo@eightysoft.de>
parents:
2154
diff
changeset
|
37 This module also provides some events used by [mod_cloud_notify]. |
4c27ebcf4cbd
mod_smacks: added new event "smacks-ack-delayed" used by mod_cloud_notify and extended the readme file accordingly (also mention mod_smacks_offline and mod_smacks_noerror in readme file)
tmolitor <thilo@eightysoft.de>
parents:
2154
diff
changeset
|
38 These events are: "smacks-ack-delayed", "smacks-hibernation-start" and |
4c27ebcf4cbd
mod_smacks: added new event "smacks-ack-delayed" used by mod_cloud_notify and extended the readme file accordingly (also mention mod_smacks_offline and mod_smacks_noerror in readme file)
tmolitor <thilo@eightysoft.de>
parents:
2154
diff
changeset
|
39 "smacks-hibernation-end". See [mod_cloud_notify] for details on how this |
4c27ebcf4cbd
mod_smacks: added new event "smacks-ack-delayed" used by mod_cloud_notify and extended the readme file accordingly (also mention mod_smacks_offline and mod_smacks_noerror in readme file)
tmolitor <thilo@eightysoft.de>
parents:
2154
diff
changeset
|
40 events are used there. |
4c27ebcf4cbd
mod_smacks: added new event "smacks-ack-delayed" used by mod_cloud_notify and extended the readme file accordingly (also mention mod_smacks_offline and mod_smacks_noerror in readme file)
tmolitor <thilo@eightysoft.de>
parents:
2154
diff
changeset
|
41 |
1803
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
42 Configuration |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
43 ============= |
1782 | 44 |
2063
6055a0164d63
mod_smacks/README: Add s2s-smacks and num unacked stanzas options to table
Kim Alvefur <zash@zash.se>
parents:
2043
diff
changeset
|
45 Option Default Description |
6055a0164d63
mod_smacks/README: Add s2s-smacks and num unacked stanzas options to table
Kim Alvefur <zash@zash.se>
parents:
2043
diff
changeset
|
46 ------------------------------ ----------------- ----------------------------------------------------------------------------------------- |
6055a0164d63
mod_smacks/README: Add s2s-smacks and num unacked stanzas options to table
Kim Alvefur <zash@zash.se>
parents:
2043
diff
changeset
|
47 `smacks_hibernation_time` 300 (5 minutes) The number of seconds a disconnected session should stay alive for (to allow reconnect) |
6055a0164d63
mod_smacks/README: Add s2s-smacks and num unacked stanzas options to table
Kim Alvefur <zash@zash.se>
parents:
2043
diff
changeset
|
48 `smacks_enabled_s2s` false Enable Stream Management on server connections? *Experimental* |
6055a0164d63
mod_smacks/README: Add s2s-smacks and num unacked stanzas options to table
Kim Alvefur <zash@zash.se>
parents:
2043
diff
changeset
|
49 `smacks_max_unacked_stanzas` 0 How many stanzas to send before requesting acknowledgement |
2394
4c27ebcf4cbd
mod_smacks: added new event "smacks-ack-delayed" used by mod_cloud_notify and extended the readme file accordingly (also mention mod_smacks_offline and mod_smacks_noerror in readme file)
tmolitor <thilo@eightysoft.de>
parents:
2154
diff
changeset
|
50 `smacks_max_ack_delay` 60 (1 minute) The number of seconds an ack must be unanswered to trigger an "smacks-ack-delayed" event |
1803
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
51 |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
52 Compatibility |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
53 ============= |
1782 | 54 |
1876
9c9397d692aa
mod_smacks/README: Update link to 0.8 version
Kim Alvefur <zash@zash.se>
parents:
1803
diff
changeset
|
55 ----- ----------------------------------- |
2394
4c27ebcf4cbd
mod_smacks: added new event "smacks-ack-delayed" used by mod_cloud_notify and extended the readme file accordingly (also mention mod_smacks_offline and mod_smacks_noerror in readme file)
tmolitor <thilo@eightysoft.de>
parents:
2154
diff
changeset
|
56 0.10 Works |
1803
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
57 0.9 Works |
1876
9c9397d692aa
mod_smacks/README: Update link to 0.8 version
Kim Alvefur <zash@zash.se>
parents:
1803
diff
changeset
|
58 0.8 Works, use version [7693724881b3] |
9c9397d692aa
mod_smacks/README: Update link to 0.8 version
Kim Alvefur <zash@zash.se>
parents:
1803
diff
changeset
|
59 ----- ----------------------------------- |
9c9397d692aa
mod_smacks/README: Update link to 0.8 version
Kim Alvefur <zash@zash.se>
parents:
1803
diff
changeset
|
60 |
1782 | 61 |
1803
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
62 Clients |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
63 ======= |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
64 |
1782 | 65 Clients that support XEP-0198: |
66 | |
1803
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
67 - Gajim |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
68 - Swift (but not resumption, as of version 2.0 and alphas of 3.0) |
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
69 - Psi (in an unreleased branch) |
2043
4ad3f25ab004
mod_smacks: README: Add Conversations to list of supported clients
Matthew Wild <mwild1@gmail.com>
parents:
1876
diff
changeset
|
70 - Conversations |
1803
4d73a1a6ba68
Convert all wiki pages to Markdown
Kim Alvefur <zash@zash.se>
parents:
1782
diff
changeset
|
71 - Yaxim |
1876
9c9397d692aa
mod_smacks/README: Update link to 0.8 version
Kim Alvefur <zash@zash.se>
parents:
1803
diff
changeset
|
72 |
9c9397d692aa
mod_smacks/README: Update link to 0.8 version
Kim Alvefur <zash@zash.se>
parents:
1803
diff
changeset
|
73 [7693724881b3]: //hg.prosody.im/prosody-modules/raw-file/7693724881b3/mod_smacks/mod_smacks.lua |
2394
4c27ebcf4cbd
mod_smacks: added new event "smacks-ack-delayed" used by mod_cloud_notify and extended the readme file accordingly (also mention mod_smacks_offline and mod_smacks_noerror in readme file)
tmolitor <thilo@eightysoft.de>
parents:
2154
diff
changeset
|
74 [mod_smacks_offline]: //modules.prosody.im/mod_smacks_offline |
4c27ebcf4cbd
mod_smacks: added new event "smacks-ack-delayed" used by mod_cloud_notify and extended the readme file accordingly (also mention mod_smacks_offline and mod_smacks_noerror in readme file)
tmolitor <thilo@eightysoft.de>
parents:
2154
diff
changeset
|
75 [mod_smacks_noerror]: //modules.prosody.im/mod_smacks_noerror |
4c27ebcf4cbd
mod_smacks: added new event "smacks-ack-delayed" used by mod_cloud_notify and extended the readme file accordingly (also mention mod_smacks_offline and mod_smacks_noerror in readme file)
tmolitor <thilo@eightysoft.de>
parents:
2154
diff
changeset
|
76 [mod_cloud_notify]: //modules.prosody.im/mod_cloud_notify |