str0m: Adding new candidates and invalidating all previous ones flaps instantly to disconnected

When roaming networks, we learn about new interfaces and retire old ones. It appears that, if str0m is told about all of this information at once (i.e. invalidate all current candidates and add new ones), it instantly flaps to Disconnected instead of trying the new candidate pairs.

I think this is due to evaluate_state being called at the very top of handle_timeout: https://github.com/algesten/str0m/blob/aeda389f22d534729249dbae90cdabb2858252ce/src/ice/agent.rs#L851

Is this on purpose? I would have expected str0m first start testing all newly added candidates before concluding that we are Disconnected.

About this issue

  • Original URL
  • State: closed
  • Created 3 months ago
  • Comments: 18 (18 by maintainers)

Most upvoted comments

Some preliminary testing suggests that this works quite well! Invalidating the old candidate and delaying acting on Disconnected for a few seconds means we can roam quite quickly! 😃