fix(call): handle non-standard mid-call cc messages to prevent T103 timeout#199
Closed
EdamAme-x wants to merge 1 commit into
Closed
fix(call): handle non-standard mid-call cc messages to prevent T103 timeout#199EdamAme-x wants to merge 1 commit into
EdamAme-x wants to merge 1 commit into
Conversation
…imeout Addresses #198. After conn_req/conn_rsp, the relay sends a flood of cc messages in a flat protobuf format ({1:16, 2:seq, 3:interval, 4:blob}) that bypasses the standard cc_msg oneof wrapper. These messages were invisible to decodePlanetCcMsg (bodyTag never set), and the relay tore down the call with T103 after ~10s of no response. Changes: - decodePlanetCcMsg: fall back to flat-format parsing when standard header+body fields are absent; expose rawFields on DecodedPlanetCcMsg - packCcUpdRsp: new encoder for flat-format UPD_RSP echo messages - PlanetTransport: detect flat UPD_RSP (bodyTag=16) cc messages and start a periodic cc-level echo timer matching the relay's interval - Clean up the cc-upd timer on close() NOTE: This fix is speculative — the exact response format expected by the relay is not confirmed. Manual testing with a live 1:1 call is required to validate that T103 is prevented.
Member
Author
5 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
Addresses #198 (1:1 audio call drops with T103 ~10s after answer).
After
conn_req/conn_rsp, the relay sends a flood of cc messages in a flat protobuf format that bypasses the standardcc_msgoneof wrapper. These messages were invisible todecodePlanetCcMsg(field 1 is a varint, not bytes, sobodyTagwas never set), and the relay tore down the call with T103 after ~10s of no response.What the relay sends (from #198 comment)
Shape A (~100+/s, in cc channel):
Field 1 = 16 matches
CC_MSG.UPD_RSP. This uses a flat protobuf, NOT the standardwrapCcMsgoneof format.Shape B (periodic, in sc channel):
RTCP-equivalent media statistics — currently stored as
scBytesbut never processed.Changes
decodePlanetCcMsg: fall back to flat-format parsing when standard header+body fields are absent; exposerawFieldsonDecodedPlanetCcMsgfor downstream handlingpackCcUpdRsp: new encoder for flat-format UPD_RSP echo messagesPlanetTransport.#handleFlatCcUpd: detects flat UPD_RSP (bodyTag=16) cc messages and starts a periodic cc-level echo timer matching the relay's interval (default 300ms)close()This fix is a best-effort hypothesis based on the decoded captures in the issue. The exact response format expected by the relay is not confirmed. The approach:
UPD_RSPat the relay's interval (speculative — could be wrong format/type)To verify: Run a 1:1 audio call and check if it survives past ~10s without T103. If T103 still fires, the response format or message type needs adjustment.
Test plan
deno checkpassescc_flat_16/upd_rspinstead ofcc:"" ccTag:0🤖 Generated with Claude Code