[Webkit-unassigned] [Bug 182906] New: ICE Gathering never completes due to missing srflx candidate

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Sat Feb 17 15:15:32 PST 2018


https://bugs.webkit.org/show_bug.cgi?id=182906

            Bug ID: 182906
           Summary: ICE Gathering never completes due to missing srflx
                    candidate
           Product: WebKit
           Version: Safari 11
          Hardware: Macintosh
                OS: macOS 10.13
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: WebRTC
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: thomasmullendesign at gmail.com
                CC: youennf at gmail.com

Safari 11 is intermittently waiting for a srflx candidate that never comes. Because of this, the null candidate never comes and ice gathering never completes. Although you can connect if you trickle ice and don't worry about the lack of ice completion, disabling trickle is broken.

Normal operation (on my network), gives me two candidates:
```
candidate:2222700650 1 udp 2113937151 192.168.1.105 50465 typ host generation 0 ufrag Cn1a network-cost 50
candidate:842163049 1 udp 1677729535 147.194.220.130 50465 typ srflx raddr 192.168.1.105 rport 50465 generation 0 ufrag Cn1a network-cost 50
```

However, around 1 in 10 times (by my estimate), Safari never delivers the second srflx candidate and just sits at gathering. The null candidate never arrives either.

I've tried it with a variety of STUN servers, networks and machines. This issue only occurs when using STUN.


Code to reproduce:
```
var config = {
                "iceTransports": 'all',
                "iceServers": [
                        {
                                "urls": "stun:stun.l.google.com:19302"
                        }
                ]
        }
var pc = new RTCPeerConnection(config)
pc.createDataChannel('test')
pc.createOffer().then(offer => {
  pc.setLocalDescription(offer)
})
pc.onicecandidate = (event) => {
  console.log(testId, event.candidate)
}
```

Here is a JS fiddle demonstrating how it breaks connection attempts without ice trickle (it will repeat the test multiple times and eventually stall after ~10 runs). Chrome and Firefox run this fiddle perfectly fine (they never stall on gathering).
http://jsfiddle.net/hvkn8b5e/6/

Disabling ice candidate restrictions, requesting media capture access, http/https, and restarting Safari have no effect.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20180217/8e2d2783/attachment.html>


More information about the webkit-unassigned mailing list