-
-
Notifications
You must be signed in to change notification settings - Fork 338
iOS 13.3.1 iceConfig: Setting turn server causes 40s timeout #465
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Thank you @derMani for reporting your issue.
Source: https://stackoverflow.com/questions/44627013/webrtc-media-over-tcp/44707489#44707489 I have tested 6.0.x with CoTurn (https://github.com/coturn/coturn) using UDP on AWS with NAT gateway without any issues and JSSIP 3.1.2 with Freeswitch allowing the IP of the TURN server on the SIP server. You can send me your TURN credentials by email at hthetiot-at-sylaps.com if you want me to test your TURN server on my side. But I recommend to first test it localy using that page and confirm it goes TCP https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ |
Hi, thanks for the quick answer. Looks like the turn server we are using is on:
I have removed the We did also a test with twilio and their turn servers, but again - still getting the timeout. So I can currently reproduce this with two different turn server configurations in different locations Steps to reproduce:
If you like, I can provide the project to test this as well. You should have received a mail with test credentials for our turn servers. PS: This does not happen in the mobile safari or desktop chrome/edge/ff. We are experiencing the timeout only with the plugin. |
Thank you @derMani I will investigate and comeback to you. I wonder if it's related to |
Hello @derMani, I do not reproduce this candicate timeout issue. I have tested the sample Trickle Ice Cordova application you sent me using the Turn Server credentials you provided by email on my side on iOS 12.4.5 on iPhone 6 with Wifi and it does works, see capture below.
I have implemented RTCIceCandidate foundation, component, priority, type, address, ip, protocol, port, relatedAddress and relatedPort properties for iOSRTC RTCIceCandidate via #468 but that only fix the display of information but does not changes that it does works for me using following setup. The only explanation for me is that the Network of your device (Wifi or GSM) is not allowing Relay to connect due Firewall Restriction. |
I tested this on multiple networks, even LTE only. I am on iOS 13.3 with an iphone xs. |
We made a debug session with @derMani and we confirmed that it does Ice gathering timeout on iOS 13.3.1 using TURN. If any other user can confirm that when using a TURN server they do experience issue with iOS 13.1.1 that would help. On my side I only have an iPhone 6 and iPad Mini 3 that cannot be upgraded to iOS 13, therefor I cannot test iOS 13 on device. I will try borrow an iOS 13 device in the comming days to try to confirm and debug the issue. |
Clould be related: coturn/coturn#249 |
This comment is interesting:
Source: https://bugs.chromium.org/p/chromium/issues/detail?id=982793#c16 Note: Launching Sylaps iOS (https://apps.apple.com/us/app/sylaps/id954016392) that use iosrtc 8.0.7 using following URL https://sylaps.com/app/room/iosrtc?relay=relay in safari to open the application to force relay type relay does work and Sylaps do perform an IceRestart that may be why Sylaps did work on iOS 13.3.1 test session with @derMani |
We use both STUN and TURN on ios 13.2 , haven't faced this issue. Using plugin version 6.0.7, built with xcode 10.2 |
I have a device on 13.3, I will test now, then upgrade to 13.3.1 to see if that related to the iOS update. |
Unfortunately @derMani I do not reproduce the issue on iOS 13.3.0 and 13.3.1 using iPhone 11 Pro using 6.0.8. I did test 13.3.0 then upgraded to 13.3.1 did not change anything both worked. May be one thing that can be tested is Reset your Network Settings. “Tap Settings > General > Reset > Reset Network Settings.” |
Closed due inactivity of reporter. |
Risking to be banned by @hthetiot for commenting on closed issue, but it's relevant. I had exactly the same issue on iosRTC 6.0.x (5.0.x works fine). The issue exists on devices running iOS 13.* using JsSIP 3.4.4, as well as a plain webrtc API. In my case, the call is established as usual when iOS device is on LTE, but it is never established while on Wi-Fi (with JsSIP it's established after ~40 seconds, as reporter mentioned above). I don't know the nature of this bug, but I solved it by leaving just one stun/turn server in |
Uh oh!
There was an error while loading. Please reload this page.
Hi,
we are experiencing a few issues with the ice server configuration since 6.0.x
Problem:
if we set the turn servers, we'll have to wait for a long timeout, until the
iceconnectionstatechange
event fires and the
iceconnectionstate
is set to completed.If no turn servers are set, we can immediately get the possible candidates and we get a quick completed event.
If turn servers are set, we get the long timeout (only on iOS with this plugin).
With the same configuration, we'll get quick gathering results from Chrome, Firefox or Edge or even the android webview.
Expected behavior
Gathering of candidates is quick(er).
iceconnectionstatechange
will be set to completed after a short(er) period of time.
Observed behavior
It takes sometime 40s or more until
iceconnectionstatechange
firesand
iceconnectionstate
is set to completed.Steps to reproduce the problem
We are using JSSIP 3.3.x
The Call of course can only be established after the gathering of ice candidates is completed.
We are using the following peerConnectionConfig
Do you need turnserver credentials for testing? I don't want to drop the credentials here ;) but I could provide turnserver credentials if needed.
Is this a WebRTC bug or is this plugin behavior ?
Platform information
The text was updated successfully, but these errors were encountered: