Separate lookup nodes and setup nodes

This commit is contained in:
Asim Aslam 2019-09-02 12:05:47 +01:00
parent 956be5c59d
commit 2cdfed359f

View File

@ -132,17 +132,28 @@ func (t *tun) monitor() {
case <-t.closed: case <-t.closed:
return return
case <-reconnect.C: case <-reconnect.C:
var connect []string
// build list of unknown nodes to connect to
t.RLock()
for _, node := range t.options.Nodes { for _, node := range t.options.Nodes {
t.Lock()
if _, ok := t.links[node]; !ok { if _, ok := t.links[node]; !ok {
connect = append(connect, node)
}
}
t.RUnlock()
for _, node := range connect {
// create new link
link, err := t.setupLink(node) link, err := t.setupLink(node)
if err != nil { if err != nil {
log.Debugf("Tunnel failed to setup node link to %s: %v", node, err) log.Debugf("Tunnel failed to setup node link to %s: %v", node, err)
t.Unlock()
continue continue
} }
// save the link
t.Lock()
t.links[node] = link t.links[node] = link
}
t.Unlock() t.Unlock()
} }
} }