I just would like to see summaries of what this does for us, as this can be googled and helps people out of context. Please consider, I know it’s annoying but it helps with the quick searches and SEO.
I cannot describe it better than the original issue does:
Problem
Under normal circumstances, in case of connection issues, the ICE connection should eventually fail. connectionstatechange event will fire, and the application will have the opportunity to do something with it.
However, if all ICE candidates error during the gathering, the connection will forever stay in a new state and connectionstatechangeevent will never fire.
Solution
Expose ICE gathering state and state change event so, if ICE connection fails and ICE gathering state remains in “new” state it means that the problem was lack of working local ICE candidates.