Closed cnderrauber closed 2 years ago
Try to make a local pr that response 400 to the new nominate request, will cause chrome period ice disconnect, so what's the best solution for this case?
I believe this belong to pion/ice, and we need aggressive nominate things, how about make it a SettingEngine option? @Sean-Der
Your environment.
What did you do?
I have more than one interfaces, 1 wireless(172.19.4.x), 1 wire(172.19.20.x), 2 vpn. And enable udp mux at 7884 and network interface filter only include the en0 (wireless).
That will cause udp mux listen on(0.0.0.0), but only send candidate 172.19.4.x, chrome first nominate 172.19.4.x candidate and accept by pion, then it discover the new reachable address not announced (172.19.20.x), and try nominate this new candidate, pion response to the ping request with ‘use-candidate’, but reject switch to the new candidate because it already have one. But chrome switch to the new candidate(because it received the ping response) and stop ping the old one, so after some seconds, timeout and disconnected.
Pion:
chrome:
chrome first nominate 172.19.4.x, then nominate 172.19.20.x. Pion response to both nominate, but only select the first one and expect ping request from first one.
After a few seconds, pion disconnect because no check alive ping request received.
From log we can see chrome send ping reqeust from the latter candidate, but pion expect the first one.
What did you expect?
Pion select the second nominated candidate if it has higher priority than the previous one, or don't response to the stun bind request with 'Use-Candidate' attribute if it don't want to switch to.
What happened?
Pion response to the second request, but not switch to it, state inconsistency with client
In https://datatracker.ietf.org/doc/html/rfc8445#section-8
Looks chrome don't compliant this.
And Pion seems not compliant below behavior