From 283943ec2394defd61da4092ef8d8530d81be488 Mon Sep 17 00:00:00 2001 From: cnderrauber Date: Thu, 29 Dec 2022 18:46:14 +0800 Subject: [PATCH] Aggressive nomination on binding response Add aggressive nomination when nominateOnBindingSuccess --- selection.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/selection.go b/selection.go index 26a010c..9f9a592 100644 --- a/selection.go +++ b/selection.go @@ -230,8 +230,11 @@ func (s *controlledSelector) HandleSuccessResponse(m *stun.Message, local, remot p.state = CandidatePairStateSucceeded s.log.Tracef("Found valid candidate pair: %s", p) if p.nominateOnBindingSuccess { - if selectedPair := s.agent.getSelectedPair(); selectedPair == nil { + if selectedPair := s.agent.getSelectedPair(); selectedPair == nil || + (selectedPair != p && selectedPair.priority() <= p.priority()) { s.agent.setSelectedPair(p) + } else if selectedPair != p { + s.log.Tracef("ignore nominate new pair %s, already nominated pair %s", p, selectedPair) } } }