From 358dc33274d2427d17292e82a58bac1b75408963 Mon Sep 17 00:00:00 2001 From: Hugo Arregui Date: Wed, 7 Aug 2019 08:18:46 -0300 Subject: [PATCH] Start a candidate before adding it This way we ensure the connection will be already present when the candidate is in the checklist --- gather.go | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/gather.go b/gather.go index 64c8c9e..6513934 100644 --- a/gather.go +++ b/gather.go @@ -213,21 +213,14 @@ func (a *Agent) gatherCandidatesLocal(networkTypes []NetworkType) { } if err := a.run(func(agent *Agent) { + c.start(a, conn) a.addCandidate(c) - }); err != nil { - a.log.Warnf("Failed to append to localCandidates: %v\n", err) - return - } - c.start(a, conn) - - if err := a.run(func(agent *Agent) { if a.onCandidateHdlr != nil { go a.onCandidateHdlr(c) } }); err != nil { - a.log.Warnf("Failed to run onCandidateHdlr task: %v\n", err) - return + a.log.Warnf("Failed to append to localCandidates and run onCandidateHdlr: %v\n", err) } }(network, ip) } @@ -282,21 +275,14 @@ func (a *Agent) gatherCandidatesSrflx(urls []*URL, networkTypes []NetworkType) { } if err := a.run(func(agent *Agent) { + c.start(a, conn) a.addCandidate(c) - }); err != nil { - a.log.Warnf("Failed to append to localCandidates: %v\n", err) - continue - } - c.start(a, conn) - - if err := a.run(func(agent *Agent) { if a.onCandidateHdlr != nil { go a.onCandidateHdlr(c) } }); err != nil { - a.log.Warnf("Failed to run onCandidateHdlr task: %v\n", err) - continue + a.log.Warnf("Failed to append to localCandidates and run onCandidateHdlr: %v\n", err) } } } @@ -364,8 +350,16 @@ func (a *Agent) gatherCandidatesRelay(urls []*URL) error { continue } - a.addCandidate(candidate) - candidate.start(a, relayConn) + if err := a.run(func(agent *Agent) { + candidate.start(a, relayConn) + a.addCandidate(candidate) + + if a.onCandidateHdlr != nil { + go a.onCandidateHdlr(candidate) + } + }); err != nil { + a.log.Warnf("Failed to append to localCandidates and run onCandidateHdlr: %v\n", err) + } } return nil