Merge pull request #933 from tendermint/880-node-fails-if-one-of-the-seeds-cannot-be-resolved
tolerate unresolvable seeds
This commit is contained in:
commit
1ae14e5a3d
|
@ -5,8 +5,8 @@
|
||||||
package p2p
|
package p2p
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"flag"
|
"flag"
|
||||||
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
@ -45,7 +45,6 @@ func NewNetAddress(addr net.Addr) *NetAddress {
|
||||||
// address in the form of "IP:Port". Also resolves the host if host
|
// address in the form of "IP:Port". Also resolves the host if host
|
||||||
// is not an IP.
|
// is not an IP.
|
||||||
func NewNetAddressString(addr string) (*NetAddress, error) {
|
func NewNetAddressString(addr string) (*NetAddress, error) {
|
||||||
|
|
||||||
host, portStr, err := net.SplitHostPort(addr)
|
host, portStr, err := net.SplitHostPort(addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -73,16 +72,18 @@ func NewNetAddressString(addr string) (*NetAddress, error) {
|
||||||
|
|
||||||
// NewNetAddressStrings returns an array of NetAddress'es build using
|
// NewNetAddressStrings returns an array of NetAddress'es build using
|
||||||
// the provided strings.
|
// the provided strings.
|
||||||
func NewNetAddressStrings(addrs []string) ([]*NetAddress, error) {
|
func NewNetAddressStrings(addrs []string) ([]*NetAddress, []error) {
|
||||||
netAddrs := make([]*NetAddress, len(addrs))
|
netAddrs := make([]*NetAddress, 0)
|
||||||
for i, addr := range addrs {
|
errs := make([]error, 0)
|
||||||
|
for _, addr := range addrs {
|
||||||
netAddr, err := NewNetAddressString(addr)
|
netAddr, err := NewNetAddressString(addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.New(cmn.Fmt("Error in address %s: %v", addr, err))
|
errs = append(errs, fmt.Errorf("Error in address %s: %v", addr, err))
|
||||||
|
} else {
|
||||||
|
netAddrs = append(netAddrs, netAddr)
|
||||||
}
|
}
|
||||||
netAddrs[i] = netAddr
|
|
||||||
}
|
}
|
||||||
return netAddrs, nil
|
return netAddrs, errs
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewNetAddressIPPort returns a new NetAddress using the provided IP
|
// NewNetAddressIPPort returns a new NetAddress using the provided IP
|
||||||
|
|
|
@ -51,11 +51,9 @@ func TestNewNetAddressString(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestNewNetAddressStrings(t *testing.T) {
|
func TestNewNetAddressStrings(t *testing.T) {
|
||||||
assert, require := assert.New(t), require.New(t)
|
addrs, errs := NewNetAddressStrings([]string{"127.0.0.1:8080", "127.0.0.2:8080"})
|
||||||
addrs, err := NewNetAddressStrings([]string{"127.0.0.1:8080", "127.0.0.2:8080"})
|
assert.Len(t, errs, 0)
|
||||||
require.Nil(err)
|
assert.Equal(t, 2, len(addrs))
|
||||||
|
|
||||||
assert.Equal(2, len(addrs))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestNewNetAddressIPPort(t *testing.T) {
|
func TestNewNetAddressIPPort(t *testing.T) {
|
||||||
|
|
|
@ -298,9 +298,9 @@ func (sw *Switch) startInitPeer(peer *peer) {
|
||||||
|
|
||||||
// DialSeeds dials a list of seeds asynchronously in random order.
|
// DialSeeds dials a list of seeds asynchronously in random order.
|
||||||
func (sw *Switch) DialSeeds(addrBook *AddrBook, seeds []string) error {
|
func (sw *Switch) DialSeeds(addrBook *AddrBook, seeds []string) error {
|
||||||
netAddrs, err := NewNetAddressStrings(seeds)
|
netAddrs, errs := NewNetAddressStrings(seeds)
|
||||||
if err != nil {
|
for _, err := range errs {
|
||||||
return err
|
sw.Logger.Error("Error in seed's address", "err", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if addrBook != nil {
|
if addrBook != nil {
|
||||||
|
|
Loading…
Reference in New Issue