-
Ge0rG
What do you do if a join presence to a MUC times out? If you are just on a slow network, eventually the join will complete. If the remote MUC server is down, you don't quite know.
-
Kev
Swift says something like "No response has been received yet, maybe you're never going to join".
-
Kev
(Not those exact words)
-
Ge0rG
(using a library with a "hard" timeout isn't exactly helping, btw)
-
Kev
There's almost no instance in XMPP where a hard timeout is helpful at the protocol level.
-
Ge0rG
I wondered why my message parser was crashing on a null pointer dereference, but it was because the join didn't complete in 30s before that, and thus the controller object was decomissioned.
-
Ge0rG
Kev: establishing a c2s connection from a mobile client.
-
Kev
I said 'at the protocol level' deliberately, because session startup is an exception.
-
Ge0rG
I tend to agree. It would be great to have a mechanism that triggers a soft-timeout handler without actually removing the success handler
-
Ge0rG
so that you can show "this is taking unusually long. please be patient"
-
Ge0rG
(this is also not how most APIs work)
-
Kev
In Swift we just go a layer above.
-
Kev
So the layer that asked for the MUC join displays the message if the library hasn't announced a completion yet.
-
Ge0rG
Hm, yeah.
-
lovetox
how can a join timeout wihout response?
-
lovetox
should your own server not tell you that the muc server is not reachable
-
Ge0rG
lovetox: it can't. But there are libraries that expect the join to be finished in a given pre-defined time
-
Ge0rG
Theoretically, it can't.
-
lovetox
ok but 30 s seems a long time
-
Kev
I was thinking 30 seconds was no time at all :D
-
lovetox
i would say servers should respond faster with a timeout error
-
Ge0rG
In practice, there is no s2s 0198, so your presence might well get lost while the remote server is tearing down
-
Ge0rG
lovetox: a) mobile connections tend to be veeeeery slow.
-
Ge0rG
I experience minute long delays on my usual train to work.
-
Kev
Mobile connections are fast compared to some things.
-
lovetox
yeah ok, Gajim never timesout, it just says endless "joining..."
-
Ge0rG
b) setting up s2s is friggin' complicated, with dialback and unhappy eyeballs etc.
-
Ge0rG
sometimes you only have a unidirectional s2s, so your join completes fast, but you never get the responses back.
-
Ge0rG
distributed systems are hard. let's go shopping!
-
Daniel
fwiw (somewhat related to this discussion) i always iq before join
-
Daniel
i need that to decide what to put into the history tag anyway
-
Daniel
and then i know if i get a server not found or something
-
Ge0rG
Daniel: what do you do if the IQ isn't responded to?
-
Daniel
display joining… i guess
-
Daniel
but it seems less likely than a lost presence
-
Ge0rG
forever?
-
Kev
That'd massively delay joining the MUC if there's a slow link though, wouldn't it?
-
Daniel
presumably
-
Ge0rG
Kev: there is no other way to know whether that JID is actually a MUC
-
Zash
Unidirectional s2s is problematic, that would eat your iq-reply too.
-
Ge0rG
can't we just have s2s-0198?
-
pep.
But with an IQ my server should send me a timeout back no? If it gets no answer. Or will it just wait that the kernel kills the tcp socket if the connection is borked?
-
Zash
Prosody won't
-
Ge0rG
pep.: your server doesn't track IQs to remote servers
-
Ge0rG
pep.: so if there is a unidirectional s2s connection, you'll wait foreve✎ -
Ge0rG
pep.: so if there is a unidirectional s2s connection, you'll wait forever ✏
-
pep.
Great
-
pep.
Well slix will timeout at least.
-
Zash
And 198 doesn't actually help with that
-
Ge0rG
Zash: why not?
-
Zash
198 is also unidirectional
-
Zash
It has nothing to do with replies
-
Ge0rG
I mean, it will not detect/fix unidirectional s2s, but it will restore all messages after a successful reconnection
-
Zash
Will it?
-
Ge0rG
You only need to kick it hard enough?
-
Zash
Reconnection support isn't mandatory afaik
-
Ge0rG
A _sane_ implementation of 0198 will help
-
Zash
Does that exist?
-
pep.
xmpp:chat@xmpp.rs?join < xmpp-rs is moving there
-
Zash
Anyone aware of any XMPP software that requires an XML declaration at the start of each stream?