This is just a hotfix workaround for an underlying problem. The
_connect_routine
code is "blocking" (in an async way) for
connect_loop_wait
seconds, so that a fresh-started manual reconnect
will be silenty delayed. This code does the following changes:
-
It moves the delay to before the DNS resolution (with the exponential back-off it might well be that the DNS records are changed while slixmpp is waiting).
-
It adds a new event
reconnect_delay
that gets passed the number of seconds it will delay before actually reconnecting -
It resets the
connect_loop_wait
timer on a manual connect/reconnect call to fix the interactive experience.
A proper fix would replace the sleep in _connect_routine
with a
properly timered re-invocation of it, but I don't understand enough of
asyncio for pulling off that magic, and this is actually a proper
improvement. Also I tested this and it works!