Open Bug 1732169 Opened 3 years ago Updated 3 years ago

ICE never completes if gathering completes before sLD(answer), and no remote candidate is added

Categories

(Core :: WebRTC: Networking, defect, P3)

defect

Tracking

()

People

(Reporter: bwc, Unassigned)

References

Details

https://jsfiddle.net/9pd7v63x/1/

I am pretty sure this happens because this code clears the grace period timer, and we're relying either on a local candidate or remote candidate to restart it:

https://searchfox.org/mozilla-central/rev/1749ba14c2ebe200855802c478780122135727f2/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_peer_ctx.c#609-615

Also note that an end-of-candidates signal is not presently plumbed down to nICEr (bug 1535690), so we still hit this bug when the remote side has explicitly told us it has no candidates:

https://jsfiddle.net/9pd7v63x/2/

This is the reason why test_peerConnection_relayOnly.html is flaky, and was disabled over in bug 1612063; on android spi jobs, gathering is completing on the answerer before we can set the answer.

In the absence of any trickle candidates from the other side, I think we should cause ICE to fail, which means we should probably only be unsetting the grace period timer if no local candidates have been gathered.

I should also note that test_peerConnection_basicAudioRelayPolicy.html does an adequate job of ensuring that ICE transport policy "relay" prevents anything but relay candidates from being trickled, so maybe it is not all that important to re-enable test_peerConnection_relayOnly.html. We probably do want a more targeted test-case, though.

See Also: → 1535690
You need to log in before you can comment on or make changes to this bug.