-
Notifications
You must be signed in to change notification settings - Fork 4
Description
Sometimes one of our tests (P2P with role conflict) fails because the remote side doesn't get all of the expected data (see: https://github.com/elixir-webrtc/ex_ice/actions/runs/15619603058/job/44000842332). The root cause is that any failure during the send procedure results in closing local candidate. In the above log dump, we have an ICE agent that was able to successfully connect using L1R1 but during subsequent checks (e.g. from L1 to R2) it fails to send ICE request (eperm) and closes local candidate, moving to the checking state again.
While we don't know what is the reason of eperm in this scenario, we shouldn't close candidate because it failed to send. It might be that the L1R1 pair was still completely fine and we just closed local candidate too aggressively.
The task is to modify our send procedure so that send errors do not close local candidates. Instead, we should either mark a pair that we tried to send request on as failed or in progress and let it timeout once all request retransmissions fail (in case later sends would pass)