| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
Presence subscriptions are normally revoked on account deletion, which
informs the contact. Sometimes this notification gets lost e.g. due to
s2s problems. The accounts JID may also be present e.g. in MUC
affiliations, chat group member lists, pubsub subscriptions or other
systems. These may grant privileges which would fall to someone who
creates the same account again, which this module is meant to prevent.
|
| |
|
|
|
|
|
| |
These would previously be left behind. Probably mostly harmless except
for clogging up the `debug:events()` listing in the console.
|
|
|
|
|
|
| |
UUID seems like insane overkill for something user-scoped and not
security-sensitive. All that is needed is to avoid conflicts among what
should be relatively long-lived sessions.
|
|
|
|
|
| |
Modules using ids for logging should not need the now pretty large
medium one.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Silences luacheck too
All we care about is that it is a bare JID, not a full JID with a
resource, since those are forbidden in rosters.
|
|
|
|
|
|
|
|
|
|
|
| |
The other invocations use it that way, and the only listener in trunk
which uses it (in mod_presence) expects it that way.
Passing the username of the JID from the removed entry causes incorrect
unavailable presence stanzas to be sent, allegedly kicking people off
MUCs.
Fixes #1121.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| | |
Data is already wiped from storage, but this ensures everything is
properly unsubscribed, possibly with notifications etc.
Clears recipient cache as well, since it is no longer relevant.
|
| |
| |
| |
| |
| | |
Using a dedicated service should give identical behavior, except for a
possible timing difference in the user existence lookup.
|
| | |
|
| | |
|
| |
| |
| |
| | |
Ensures configuration is refreshed, releases some memory.
|
| |
| |
| |
| | |
to offer
|
| | |
|
| |
| |
| |
| |
| | |
The vision: All the queueing and counting and session replacement logic
in core, with mod_smacks only hooking this up to the XEP-0198 protocol.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
It could have been resumed without going into hibernation first, i.e.
when the client notices the disconnect before the server, or if it
switches networks etc.
|
| |
| |
| |
| |
| | |
Errors sent from handle_unacked_stanzas() should usually not be sent to
the session itself, but if one is, it should not be queued.
|
| |
| |
| |
| |
| | |
Fixes that an extra watchdog was set, leaking the previous one, which
went on to do behave as if the session times out.
|
| |
| |
| |
| |
| |
| |
| |
| | |
With mod_smacks, a session can outlive the connection, so whether the
event is fired should not hinge on whether the session is connected or
not.
Helps mod_smacks remove some state.
|
| |
| |
| |
| |
| |
| | |
Still having the connection on the session may cause unintentional
behavior, such as the session being treated as if connected, even tho
the connection has been closed.
|
| | |
|
| |
| |
| |
| | |
Was this the last place using the delay? Nice!
|
| |
| |
| |
| |
| | |
Otherwise it can get stuck waiting indefinitely for an ack that made it
notice the connection was stale.
|
| |
| |
| |
| | |
Non-existent did not seem entirely accurate for this case
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Less to type if per chance the next commit also wants to access
sessions.
|
| |
| |
| |
| |
| |
| | |
To ensure that if a session is replaced after it has gone into
hibernation, it does not come back and cause trouble for the new session
(see previous commit).
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The resumption_token is removed when the session is closed via the
pre-session-close event, signaling that it cannot be resumed, and
therefore no hibernation timeout logic should be invoked.
Fixes that if a session somehow is replaced by a new one using the same
resource (which is the common behavior), the old session would still be
around until it times out at which point it sends `<presence
type="unavailable"/>` which would look as if it came from the new
session, ie appearing offline to everyone including MUCs.
|
| |
| |
| |
| | |
Meld keeps messing up indentation when I merge and rebase...
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This overloads that flag a bit, but it has the intended effect of
stopping outgoing_stanza_filter() from queueing stanzas.
Fixes a traceback because of the queue having been removed somewhere
around here, since it is no longer needed.
Thanks Martin for reporting
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This brings back the queue size limit that was once added, then removed
because destroying the session when reaching the limit was not great.
Instead, the queue wraps and overwrites the oldest unacked stanza on the
assumption that it will probably be acked anyway and thus does not need
to be delivered. If those discarded stanzas turn out to be needed on
resumption then the resumption fails.
|
| |
| |
| |
| |
| | |
Extending the timeout by poking the watchdog, and letting it go on
resumption, should be much better than the previous method.
|
| |
| |
| |
| |
| |
| |
| |
| | |
All that was a complicated way to limit the number of resumable
sessions. Let's control resource usage some other way. This leaves the
essence of mapping resumption tokens to live sessions.
This keeps resumption state across reloads.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This allows clients that try to resume a session after a server restart
to at least know which of their pending outgoing stanzas were received
and which need to be re-sent.
This removes the limit on how many of those counters are kept, which
should be fixed eventually.
|
| | |
|
| |
| |
| |
| |
| | |
Since nothing uses it. Some equivalent functionality may return in the
future.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
I have no idea what is going on in this code, which session is which?
Something has one of the sessions as an upvalue which is where the
filter checks for it.
|
| |
| |
| |
| |
| | |
Encountered what looks like a bug where after *many* resumptions, part
of the queue was not acked.
|
| |
| |
| |
| | |
Maybe it works now with the session patching in the previous commit
|