Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: update pion/ice to v4 #3175

Merged
merged 1 commit into from
Feb 6, 2025
Merged

chore: update pion/ice to v4 #3175

merged 1 commit into from
Feb 6, 2025

Conversation

achingbrain
Copy link
Member

Pion/ICE doesn't negotiate ICE role conflicts as per RFC 8445.

The Pion maintainers are open to a PR but it won't be backported to v2 so the first step is to upgrade go-libp2p to v4.

This is needed for interop with js-libp2p's WebRTC-Direct listener.

Pion/ICE doesn't negotiate ICE role conflicts [as per RFC 8445](https://datatracker.ietf.org/doc/html/rfc8445#section-7.3.1.1).

The Pion maintainers are [open to a PR](pion/ice#359 (comment)) but it won't be backported to v2 so the first step is to upgrade go-libp2p to v4.

This is needed for interop with js-libp2p's WebRTC-Direct listener.
@sukunrt
Copy link
Member

sukunrt commented Feb 6, 2025

Does this fix the issue for you? Can you share the link for interop failure?

  1. The upgrade changes only where the interface is imported from. All the ice machinery should be coming from v4 on current master since that's what pion/webrtc/v4 uses under the hood.
  2. On the Dial side the ICE Role should always be controlling since servers are expected to be webrtc lite.

@achingbrain
Copy link
Member Author

Can you share the link for interop failure?

Unfortunately no, because I'm testing locally with patches applied to the C/C++ WebRTC stack - I'm still waiting for these patches to be merged upstream.

The upgrade changes only where the interface is imported from. All the ice machinery should be coming from v4

That's interesting, would it not be better to import the same version of the interface as is used by pion/webrtc/v4?

Either way, it turns out my issue was you have to invoke libdatachannel methods just so in order to get it to be in controlled mode for ICE, so this isn't needed for interop after all but seems like the kind of thing you might want to do anyway?

@sukunrt
Copy link
Member

sukunrt commented Feb 6, 2025

but seems like the kind of thing you might want to do anyway?

Definitely! We should depend only on the latest ice package.

@sukunrt sukunrt merged commit 4957d35 into master Feb 6, 2025
9 checks passed
@achingbrain achingbrain deleted the chore/update-pion-ice branch February 7, 2025 06:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants