Skip to content

Eperm results in closing local candidate #82

@mickel8

Description

@mickel8

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions