New issue
Advanced search Search tips

Issue 878719 link

Starred by 1 user

Issue metadata

Status: Assigned
Owner:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 3
Type: Bug



Sign in to add a comment

When Firefox calles Chrome i get: DOMException: Error processing ICE candidate

Reported by bogdanos...@gmail.com, Aug 29

Issue description

UserAgent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36

Steps to reproduce the problem:
1. Caller side (alice) is google chrome browser ( creates offer with audio constraint set to true)
2. Callee side (bob) is firefox browser (waiting for caller to send offer to create answer, audio constraint set to true)

What is the expected behavior?
WebRTC offer/answer & ice candidate exchange should happen between two browser and flow of media starts.

What went wrong?
During the ice gathering stage of the WebRTC exchange. Google Chrome generates local ice candidates normaly, only when it starts receiving remote candidates to be added the
" DOMException: Error processing ICE candidate " occurs on the google chrome browser.
It only receives one remote candidate from Firefox and others throw the DOMException error.

Did this work before? No 

Does this work in other browsers? N/A

Chrome version: 68.0.3440.106  Channel: stable
OS Version: 6.1 (Windows 7, Windows Server 2008 R2)
Flash Version: 

When the roles are reversed the exchange goes on without a problem. No error is thrown. 
Note: Tested on local machine.
 
chrome_firefox_webrtcBUg.PNG
217 KB View Download
webrtc_internals_dump (4).txt
1.8 MB View Download
Correction: When chrome calles firefox
you seem to be missing a setRemoteDescription call before calling addIceCandidate. Throwing an error is appropriate in that case is expected.

Now why setRemoteDescription is not called is another question.
Labels: Needs-Triage-M68
Thanks for responding and noticing that setRemoteDescription is missing. I have tested the scenario in different examples: 
1. Chrome calling Chrome
2. Firefox calling Chrome
3. Chrome calling Firefox

And only in the example when Chrome calls Firefox setRemoteDescription isn't fired, in all other examples remoteDescription is set. I see with console logs that Firefox doesn't set localDescription, so it sends null to Chrome.

So I looked into the code and it looks like the problem was that Firefox didn't return the right value when pc.createAnswer was called.

The code that was causing the problem was:

            this.pc.createAnswer(answerParams)
                .then( answer => {
                    if (hold) {
                        this.pc.setLocalDescription(this.sdp.inactive(answer));
                    } else {
                        this.pc.setLocalDescription(answer);
                    }                    
                    console.warn(`${answer.type}\n ${answer.sdp}`);
                })

The new code that made it work is:

            this.pc.createAnswer(answerParams)
                .then( answer => {
                    console.warn(`${answer.type}\n ${answer.sdp}`);
                    if (hold) {
                        return this.pc.setLocalDescription(this.sdp.inactive(answer));
                    } else {
                        return this.pc.setLocalDescription(answer);
                    }
                })

chrome_calling_chrome.PNG
196 KB View Download
chrome_calling_firefox.PNG
195 KB View Download
firefox_calling_chrome.PNG
203 KB View Download
firefox_about_webrtc.PNG
155 KB View Download
Components: -Blink>WebRTC Blink>WebRTC>PeerConnection
Labels: -Pri-2 Pri-3
Owner: hbos@chromium.org
Status: Assigned (was: Unconfirmed)
hbos@: Can you take a look? From the discussion it looks like this is not a bug.

Sign in to add a comment