You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
So, this is a bit of a doozy, I've got a device in the field that has some funky routing going on for ipv6, meaning it resolves and works on the local LAN, but isn't routed properly.
This means that rumqttc client will fail all connections when connect timeout is set to a value less than ~5 minutes, as the code in socket_connect will stall on the first ip resolved, and then block further execution and be trapped by the total connection timeout.
In case of routing issues, the individual socket connections will take
~4.5 minutes depending on OS level socket syn retransmit settings, which
means that if there is a connection timeout that is shorter than that,
connection will never be established even if other IP's resolve and
route properly.
This implements concurrent connection attempts with a staggerd delay
between attempts. I have chosen not to implement a full version of
RFC8305 (Happy Eyeballs) here, as that is a much more invasive change.
Signed-off-by: D.S. Ljungmark <[email protected]>
Issue: bytebeamio#939
Spindel
added a commit
to Spindel/rumqtt
that referenced
this issue
Jan 29, 2025
In case of routing issues, the individual socket connections will take
~4.5 minutes depending on OS level socket syn retransmit settings, which
means that if there is a connection timeout that is shorter than that,
connection will never be established even if other IP's resolve and
route properly.
This implements concurrent connection attempts with a staggerd delay
between attempts. I have chosen not to implement a full version of
RFC8305 (Happy Eyeballs) here, as that is a much more invasive change.
Signed-off-by: D.S. Ljungmark <[email protected]>
Issue: bytebeamio#939
So, this is a bit of a doozy, I've got a device in the field that has some funky routing going on for ipv6, meaning it resolves and works on the local LAN, but isn't routed properly.
This means that rumqttc client will fail all connections when connect timeout is set to a value less than ~5 minutes, as the code in socket_connect will stall on the first ip resolved, and then block further execution and be trapped by the total connection timeout.
Some possible solutions:
How to replicate:
Desired functionality:
The text was updated successfully, but these errors were encountered: