Skip to content

Fix call disconnections by resolving ICE role conflicts#189

Merged
bgardner8008 merged 8 commits into
masterfrom
MM-67602-pion-ice-fix
Feb 18, 2026
Merged

Fix call disconnections by resolving ICE role conflicts#189
bgardner8008 merged 8 commits into
masterfrom
MM-67602-pion-ice-fix

Conversation

@bgardner8008
Copy link
Copy Markdown
Contributor

@bgardner8008 bgardner8008 commented Feb 17, 2026

Summary

This PR addresses call disconnection problems encountered by users of Chrome 145 and Desktop 6.2. Disconnections are caused by unresolved ICE role conflicts. This is partially fixed by commit 2c04474e in Pion ICE which detects local role conflicts and either changes role or sends a role conflict error (487) response. However, Pion ICE does not implement handling role conflict error responses, which is the other half of the solution. This PR uses a fork of Pion ICE which includes handling of role conflict errors.

Additionally, this PR also includes updated versions of various Pion libraries.

Ticket Link

https://mattermost.atlassian.net/browse/MM-67602

bgardner8008 and others added 7 commits February 15, 2026 11:45
Points to local Pion ice fork with 487 Role Conflict fix:
github.com/bgardner8008/ice (branch: fix/handle-role-conflict-error-response)

The fix handles STUN 487 Role Conflict error responses by:
1. Detecting the error in handleInboundErrorResponse
2. Switching ICE role (controlled ↔ controlling)
3. Retrying connectivity check with new role

This implements RFC 8445 section 7.3.1.1 role conflict resolution.

Related: MM-67602

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Update pion/webrtc from v4.1.3 to v4.2.6 to resolve transport v3/v4 conflict
- Use pion/ice fork v4.2.0-role-conflict-fix with 487 Role Conflict fix
- Use pion/interceptor fork v0.1.44-mm-mods with MM modifications and LoggerFactory support
- Update pion/rtp from v1.8.26 to v1.10.1
- Remove pion/transport/v3 dependency (now only uses v4)

The ice fork implements RFC 8445 section 7.3.1.1 role conflict resolution
by detecting STUN 487 errors and switching ICE roles accordingly.

Related: MM-67602

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@bgardner8008 bgardner8008 requested a review from cpoile February 17, 2026 22:17
@bgardner8008 bgardner8008 changed the title Fix ICE role conflicts via Pion ICE fork Fix call disconnections by resolving ICE role conflicts Feb 18, 2026
Comment thread go.mod Outdated
Comment thread service/rtc/sfu.go
@bgardner8008 bgardner8008 requested a review from cpoile February 18, 2026 21:20
Copy link
Copy Markdown
Member

@cpoile cpoile left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Bill!

@bgardner8008 bgardner8008 merged commit ab0efd2 into master Feb 18, 2026
9 checks passed
@bgardner8008 bgardner8008 deleted the MM-67602-pion-ice-fix branch February 18, 2026 23:23
@edgarbellot edgarbellot self-requested a review February 19, 2026 15:01
Copy link
Copy Markdown

@edgarbellot edgarbellot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All good, thank you!

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.

3 participants