diff --git a/switch.go b/switch.go index bbb73805e..d029854e7 100644 --- a/switch.go +++ b/switch.go @@ -195,8 +195,10 @@ func (sw *Switch) OnStop() { // NOTE: This performs a blocking handshake before the peer is added. // CONTRACT: Iff error is returned, peer is nil, and conn is immediately closed. func (sw *Switch) AddPeerWithConnection(conn net.Conn, outbound bool) (*Peer, error) { + // Filter by addr (ie. ip:port) if err := sw.FilterConnByAddr(conn.RemoteAddr()); err != nil { + conn.Close() return nil, err } @@ -217,6 +219,7 @@ func (sw *Switch) AddPeerWithConnection(conn net.Conn, outbound bool) (*Peer, er // Filter by p2p-key if err := sw.FilterConnByPubKey(sconn.(*SecretConnection).RemotePubKey()); err != nil { + sconn.Close() return nil, err } @@ -466,18 +469,15 @@ func MakeConnectedSwitches(n int, initSwitch func(int, *Switch) *Switch, connect switches[i] = makeSwitch(i, "testing", "123.123.123", initSwitch) } + if err := StartSwitches(switches); err != nil { + panic(err) + } + for i := 0; i < n; i++ { for j := i; j < n; j++ { connect(switches, i, j) } } - // Wait for things to happen, peers to get added... - // TODO: better - time.Sleep(100 * time.Millisecond * time.Duration(n*n)) - - if err := StartSwitches(switches); err != nil { - panic(err) - } return switches } diff --git a/types.go b/types.go index 0db2c957b..4f3e4c1d8 100644 --- a/types.go +++ b/types.go @@ -21,7 +21,7 @@ type NodeInfo struct { Other []string `json:"other"` // other application specific data } -// CONTRACT: two nodes are compactible if the major/minor versions match and network match +// CONTRACT: two nodes are compatible if the major/minor versions match and network match func (info *NodeInfo) CompatibleWith(other *NodeInfo) error { iMajor, iMinor, _, iErr := splitVersion(info.Version) oMajor, oMinor, _, oErr := splitVersion(other.Version)