5
0
mirror of https://github.com/cwinfo/yggdrasil-go.git synced 2024-11-22 17:40:26 +00:00

Merge develop into bugfixes

This commit is contained in:
Neil Alexander 2019-09-19 09:05:56 +01:00
commit 681e9afc79
No known key found for this signature in database
GPG Key ID: A02A2019A2BB0944

View File

@ -368,13 +368,34 @@ func (c *Core) SetLogger(log *log.Logger) {
// connection drops. // connection drops.
func (c *Core) AddPeer(addr string, sintf string) error { func (c *Core) AddPeer(addr string, sintf string) error {
if err := c.CallPeer(addr, sintf); err != nil { if err := c.CallPeer(addr, sintf); err != nil {
// TODO: We maybe want this to write the peer to the persistent
// configuration even if a connection attempt fails, but first we'll need to
// move the code to check the peer URI so that we don't deliberately save a
// peer with a known bad URI. Loading peers from config should really do the
// same thing too but I don't think that happens today
return err return err
} }
c.config.Mutex.Lock() c.config.Mutex.Lock()
if sintf == "" { if sintf == "" {
for _, peer := range c.config.Current.Peers {
if peer == addr {
return errors.New("peer already added")
}
}
c.config.Current.Peers = append(c.config.Current.Peers, addr) c.config.Current.Peers = append(c.config.Current.Peers, addr)
} else { } else {
c.config.Current.InterfacePeers[sintf] = append(c.config.Current.InterfacePeers[sintf], addr) if _, ok := c.config.Current.InterfacePeers[sintf]; ok {
for _, peer := range c.config.Current.InterfacePeers[sintf] {
if peer == addr {
return errors.New("peer already added")
}
}
}
if _, ok := c.config.Current.InterfacePeers[sintf]; !ok {
c.config.Current.InterfacePeers[sintf] = []string{addr}
} else {
c.config.Current.InterfacePeers[sintf] = append(c.config.Current.InterfacePeers[sintf], addr)
}
} }
c.config.Mutex.Unlock() c.config.Mutex.Unlock()
return nil return nil