[PR #5828] [client] Add tri-state connection status to guard for smarter ICE retry #28606

Closed
opened 2026-08-05 08:06:38 -04:00 by saavagebueno · 0 comments
Owner

Original Pull Request: https://github.com/netbirdio/netbird/pull/5828

State: closed
Merged: Yes


Describe your changes

Refactor: optimize ICE retry strategy

  • Refactored isConnectedOnAllWay to return a ConnStatus enum:

    • Connected
    • Disconnected
    • PartiallyConnected
  • Updated connection handling logic:

    • When relay is up but ICE is not (PartiallyConnected):

      • Limit ICE offers to 3 retries with exponential backoff
      • After retries are exhausted, fall back to hourly retry attempts
      • Reduces unnecessary signaling traffic
    • When fully disconnected:

      • Continue aggressive retry behavior
  • Improved resiliency:

    • External events (relay/ICE disconnect, signal/relay reconnect) reset retry state
    • Ensures ICE gets a fresh retry cycle after state changes

Stack

Checklist

  • Is it a bug fix
  • Is a typo/documentation fix
  • Is a feature enhancement
  • It is a refactor
  • Created tests that fail without the change (if possible)

By submitting this pull request, you confirm that you have read and agree to the terms of the Contributor License Agreement.

Documentation

Select exactly one:

  • I added/updated documentation for this change
  • Documentation is not needed for this change (explain why)

Docs PR URL (required if "docs added" is checked)

Paste the PR link from https://github.com/netbirdio/docs here:

https://github.com/netbirdio/docs/pull/__

Summary by CodeRabbit

  • Bug Fixes
    • Improved handling of partial peer connectivity when only some connection paths are available.
    • Enhanced connection retry mechanism for faster and more reliable peer-to-peer connection establishment in challenging network conditions.
**Original Pull Request:** https://github.com/netbirdio/netbird/pull/5828 **State:** closed **Merged:** Yes --- ## Describe your changes **Refactor: optimize ICE retry strategy** * Refactored `isConnectedOnAllWay` to return a `ConnStatus` enum: * `Connected` * `Disconnected` * `PartiallyConnected` * Updated connection handling logic: * When relay is up but ICE is not (`PartiallyConnected`): * Limit ICE offers to 3 retries with exponential backoff * After retries are exhausted, fall back to hourly retry attempts * Reduces unnecessary signaling traffic * When fully disconnected: * Continue aggressive retry behavior * Improved resiliency: * External events (relay/ICE disconnect, signal/relay reconnect) reset retry state * Ensures ICE gets a fresh retry cycle after state changes ## Issue ticket number and link ## Stack <!-- branch-stack --> ### Checklist - [ ] Is it a bug fix - [ ] Is a typo/documentation fix - [ ] Is a feature enhancement - [x] It is a refactor - [ ] Created tests that fail without the change (if possible) > By submitting this pull request, you confirm that you have read and agree to the terms of the [Contributor License Agreement](https://github.com/netbirdio/netbird/blob/main/CONTRIBUTOR_LICENSE_AGREEMENT.md). ## Documentation Select exactly one: - [ ] I added/updated documentation for this change - [x] Documentation is **not needed** for this change (explain why) ### Docs PR URL (required if "docs added" is checked) Paste the PR link from https://github.com/netbirdio/docs here: https://github.com/netbirdio/docs/pull/__ <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Improved handling of partial peer connectivity when only some connection paths are available. * Enhanced connection retry mechanism for faster and more reliable peer-to-peer connection establishment in challenging network conditions. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
saavagebueno added the pull-request label 2026-08-05 08:06:38 -04:00
Sign in to join this conversation.
No Label pull-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: DYNR/netbird#28606