Repository navigation
Conversation
Add an ICE-Lite session option that keeps the agent controlled, responds to incoming connectivity checks, forms valid and nominated pairs, and never originates ordinary or triggered checks. Preserve bounded nomination timeout behavior for silent peers. Add in-memory coverage for peer-reflexive nomination, trickle checklist updates, early checks, role enforcement, and timeout behavior. All implementation and tests were reviewed and validated by the contributor; AI assistance was used for code drafting and review. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
gaanthony
added a commit
to gaanthony/asterisk
that referenced
this pull request
Oct 6, 2026
Add an endpoint-scoped ice_lite option for passive ICE operation. Advertise a session-level ice-lite attribute, limit local candidates to host candidates, retain the controlled role, and allow passive sessions to reset when remote ICE credentials change. Extend the RTP ICE API so engines can enable local lite behavior and backport the PJNATH implementation submitted upstream at pjsip/pjproject#5317. Add realtime schema support and reject ice_lite when ice_support is disabled. The change was built against current master with bundled PJPROJECT. A focused Testsuite scenario validates the SDP answer and confirms that no STUN Binding request is originated. UserNote: PJSIP endpoints can set ice_lite=yes together with ice_support=yes to operate as ICE-Lite agents. UpgradeNote: The realtime PJSIP endpoint database schema now includes the ice_lite column. Run the Alembic database migrations before using this option with realtime endpoints. DeveloperNote: RTP ICE engines can implement the new set_lite callback to enable local ICE-Lite behavior. Assisted-by: GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Author
|
Withdrawing this contribution pending contributor authorization. No maintainer action is requested. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Add an ICE-Lite session option to PJNATH. A lite session remains in the controlled role, responds to incoming connectivity checks, creates valid and nominated candidate pairs from those checks, and does not originate ordinary or triggered connectivity checks.
The implementation preserves the configured nomination timeout so a silent peer fails within a bounded interval. It also prevents periodic checks from being scheduled by normal or trickle checklist processing and documents that applications must provide host candidates only.
Motivation and Context
PJNATH currently models full ICE agents. Applications that operate as ICE-Lite agents need the ICE state machine to accept and nominate incoming checks without starting their own connectivity checks. Implementing this at the session layer keeps role enforcement, pair state, nomination, timeout, and completion behavior consistent within PJNATH.
AI assistance was used to draft and review portions of the implementation and tests. I reviewed the complete change, validated the state transitions, and can own and debug the contribution.
How Has This Been Tested?
Test environment: Ubuntu Linux on x86-64 with GCC.
./configure --disable-sharedmake -j2pjnath-test ice_lite_testpjnath-test ice_test trickle_ice_test ice_wait_valid_pair_test ice_lite_testThe focused test covers peer-reflexive nomination, trickle checklist updates, an early connectivity check received before remote data is installed, rejection of a controlling role, silent-peer timeout, and zero outbound Binding requests from the lite agent.
The adjacent ICE regression run completed 15 tests with zero failures.
Screenshots (if appropriate):
Not applicable.
Types of changes
Checklist: