Repository navigation
fix(call): correlate PLANET replies and handle remote release - #241
Merged
EdamAme-x merged 4 commits intoOct 10, 2026
Merged
Conversation
3 of 4 tasks
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.
Summary
Related to #198 (not closing the broader issue).
0x2245,result=0), mirror channels, resolve typedPlanetTransport.ended, finish receive/signaling waiters, stop keepalive and reject later media sends. Concurrent close shares teardown and does not originate another release after remote release.client.call.answerIncoming(event, { deviceId, signal, timeoutMs })for ordinary 1:1 incoming audio. Listening never auto-answers. Validatedevent.audiobinds the authenticated operation's caller, CID, route credential and local profile; video/group/unclassified operations fail closed. The application owns admission and installation-ID persistence.Verification
Local Deno 2.9.6 checks:
deno test -A: 361 passed, 0 failed.node scripts/test_node_transport.mts: 2 passed, 0 failed.deno publish --dry-run --allow-dirtyin packages/linejs and packages/types: passed, including public API checks.deno check example/call/incoming.ts, formatting on changed TypeScript files andgit diff --check: passed.The existing Opus regression remains diagnostic only: synthetic
[0x7a, 107]plus 68 zero bytes is structurally invalid;[0x7a, 0]is a legal two-frame control producing 1920 samples. No codec runtime change, guessed framing repair or suppressed error is included.Evidence boundary and limitations
The source experimental JavaScript vendor was live-tested: outgoing audio completed a 60-second media window with audible speech and no T103, later remote release ended promptly, and the incoming callee path was confirmed audible after correcting its send SSRC. This upstream TypeScript port has automated synthetic verification, not a separate live phone-call test. The vendor's live results are not a claim that every upstream/group-call T103 is fixed.
Supported scope is ordinary 1:1 incoming audio. CANCEL_CALL operation correlation is not established, so cancellation is never inferred from a caller alone; use explicit abort or correlated PLANET release. Alternate BEPI/P2P migration, group/video interoperability and full native media-KDF byte equality remain unresolved. Applications coordinate incoming admission with outgoing calls and longer-lived replay policy. UDP requires Node/Deno, not a browser.
No account login, live call, production deployment or merge was performed for this port. No raw voice, captures, keys, auth tokens, real participant/device identities, private operator configuration or private PoC history are included.