Skip to content

fix connection#38

Merged
PHOEBEHAUNG merged 2 commits into
devfrom
bugfix/fix-videoview-connecting-state-display
May 28, 2026
Merged

fix connection#38
PHOEBEHAUNG merged 2 commits into
devfrom
bugfix/fix-videoview-connecting-state-display

Conversation

@PHOEBEHAUNG

Copy link
Copy Markdown
Collaborator

fix: assign resourceUrl before setRemoteAnswer so close() can DELETE

The DELETE-on-close behavior added in c1b9c6b assumed resourceUrl
was already set on the session by the time close() ran, but the
assignment was ordered AFTER setRemoteAnswer — which is a
suspendCancellableCoroutine that can hang indefinitely when the
peer never completes the answer callback (e.g. mock or malformed
answer SDP). When that happens, resourceUrl is null at cleanup time
and no DELETE is launched. The server already allocated the
resource the moment sendOffer returned, so assign resourceUrl
there, before setRemoteAnswer, on all three platforms (jvm, iOS,
Android).

E2E-V-04 close regression test additionally raced awaitSettled's
10s timeout against FULL_ICE's pre-offer gathering delay, calling
close() while sendOffer was still in-flight. Wait for the offer
POST to reach the mock server (a concrete signal that sendOffer
returned and resourceUrl was assigned) before invoking close().

Co-Authored-By: Claude Opus 4.7 (1M context) [email protected]

Phoebe Huang and others added 2 commits May 28, 2026 17:30
…derer

iOS and Android switched to the platform video view as soon as the
WebRTC client was ready, hiding SessionVideoPlaceholder before the
connection finished and never re-showing any indicator during a
Reconnecting state. Wrap the platform view in a Box and layer
SessionStatusOverlay on top so the loading/reconnecting indicator
stays visible through the full session lifecycle, matching the
JVM/Desktop renderer structure.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
The DELETE-on-close behavior added in c1b9c6b assumed resourceUrl
was already set on the session by the time close() ran, but the
assignment was ordered AFTER setRemoteAnswer — which is a
suspendCancellableCoroutine that can hang indefinitely when the
peer never completes the answer callback (e.g. mock or malformed
answer SDP). When that happens, resourceUrl is null at cleanup time
and no DELETE is launched. The server already allocated the
resource the moment sendOffer returned, so assign resourceUrl
there, before setRemoteAnswer, on all three platforms (jvm, iOS,
Android).

E2E-V-04 close regression test additionally raced awaitSettled's
10s timeout against FULL_ICE's pre-offer gathering delay, calling
close() while sendOffer was still in-flight. Wait for the offer
POST to reach the mock server (a concrete signal that sendOffer
returned and resourceUrl was assigned) before invoking close().

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@PHOEBEHAUNG
PHOEBEHAUNG merged commit a7372e8 into dev May 28, 2026
1 check failed
PHOEBEHAUNG added a commit that referenced this pull request May 28, 2026
Merge pull request #38 from Syncrobotic/bugfix/fix-videoview-connecting-state-display

fix connection
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.

1 participant