diff --git a/addrs.go b/addrs.go index 17c65ae7b25b88c09fd7d96c1261948a72e425c7..b9068720c55d563530a6ddfbfde8e4f8c0d8a4ab 100644 --- a/addrs.go +++ b/addrs.go @@ -1,6 +1,7 @@ package swarm import ( + filter "github.com/libp2p/go-maddr-filter" ma "github.com/multiformats/go-multiaddr" mamask "github.com/whyrusleeping/multiaddr-filter" ) @@ -30,6 +31,6 @@ func init() { if err != nil { panic("error in lowTimeoutFilters init: " + err.Error()) } - lowTimeoutFilters.AddDialFilter(f) + lowTimeoutFilters.AddFilter(*f, filter.ActionDeny) } } diff --git a/dial_sync.go b/dial_sync.go index 3179016661391b4c3e8a79749cdaa2e25e9b7bc8..e334ef5a258f9f40f3f6fc7ff01ead34514c966e 100644 --- a/dial_sync.go +++ b/dial_sync.go @@ -2,16 +2,12 @@ package swarm import ( "context" - "errors" "sync" "github.com/libp2p/go-libp2p-core/network" "github.com/libp2p/go-libp2p-core/peer" ) -// TODO: change this text when we fix the bug -var errDialCanceled = errors.New("dial was aborted internally, likely due to https://git.io/Je2wW") - // DialWorerFunc is used by DialSync to spawn a new dial worker type dialWorkerFunc func(context.Context, peer.ID, <-chan dialRequest) error diff --git a/dial_test.go b/dial_test.go index 70eeb9f51d70d7ef3ac4747de28b66d06537a8c1..6258d0eda124c3466a6e7c64c06f2526b9bfaef9 100644 --- a/dial_test.go +++ b/dial_test.go @@ -437,9 +437,10 @@ func TestDialBackoffClears(t *testing.T) { s1.Peerstore().AddAddr(s2.LocalPeer(), s2bad, peerstore.PermanentAddrTTL) before := time.Now() - if c, err := s1.DialPeer(ctx, s2.LocalPeer()); err == nil { - t.Fatal("dialing to broken addr worked...", err) + c, err := s1.DialPeer(ctx, s2.LocalPeer()) + if err == nil { defer c.Close() + t.Fatal("dialing to broken addr worked...", err) } else { t.Log("correctly got error:", err) } diff --git a/go.mod b/go.mod index b8fd49ccfc0a2fb461280303478b273b023f2b0f..2b48e7a07e21817b7a9f94ea03b14af8067c8d74 100644 --- a/go.mod +++ b/go.mod @@ -14,6 +14,7 @@ require ( github.com/libp2p/go-libp2p-testing v0.4.0 github.com/libp2p/go-libp2p-transport-upgrader v0.4.2 github.com/libp2p/go-libp2p-yamux v0.5.0 + github.com/libp2p/go-maddr-filter v0.1.0 github.com/libp2p/go-stream-muxer-multistream v0.3.0 github.com/libp2p/go-tcp-transport v0.2.0 github.com/multiformats/go-multiaddr v0.3.1 diff --git a/go.sum b/go.sum index f2cbf841fc45a6c7ef33bf55c8c655d772f90352..dfb1b9183612f17c74f8f6c4f5e79b665c2b022d 100644 --- a/go.sum +++ b/go.sum @@ -214,6 +214,7 @@ github.com/libp2p/go-libp2p-transport-upgrader v0.4.2/go.mod h1:NR8ne1VwfreD5VIW github.com/libp2p/go-libp2p-yamux v0.5.0 h1:ZzmUhbQE+X7NuYUT2naxN31JyebZfRmpZVhKtRP13ys= github.com/libp2p/go-libp2p-yamux v0.5.0/go.mod h1:AyR8k5EzyM2QN9Bbdg6X1SkVVuqLwTGf0L4DFq9g6po= github.com/libp2p/go-maddr-filter v0.0.5/go.mod h1:Jk+36PMfIqCJhAnaASRH83bdAvfDRp/w6ENFaC9bG+M= +github.com/libp2p/go-maddr-filter v0.1.0 h1:4ACqZKw8AqiuJfwFGq1CYDFugfXTOos+qQ3DETkhtCE= github.com/libp2p/go-maddr-filter v0.1.0/go.mod h1:VzZhTXkMucEGGEOSKddrwGiOv0tUhgnKqNEmIAz/bPU= github.com/libp2p/go-mplex v0.1.0/go.mod h1:SXgmdki2kwCUlCCbfGLEgHjC4pFqhTp0ZoV6aiKgxDU= github.com/libp2p/go-mplex v0.1.2/go.mod h1:Xgz2RDCi3co0LeZfgjm4OgUF15+sVR8SRcu3SFXI1lk= diff --git a/peers_test.go b/peers_test.go index fd1984d0725af7860f1d3af20c5276d5570697a0..8e82bf5bde14372cee18e995e4c52f466d799d94 100644 --- a/peers_test.go +++ b/peers_test.go @@ -33,8 +33,8 @@ func TestPeers(t *testing.T) { // t.Log(s.swarm.Dump()) } - s1GotConn := make(chan struct{}, 0) - s2GotConn := make(chan struct{}, 0) + s1GotConn := make(chan struct{}) + s2GotConn := make(chan struct{}) s1.SetConnHandler(func(c network.Conn) { s1GotConn <- struct{}{} }) diff --git a/swarm.go b/swarm.go index d42020a89dbccd19e6a05ffab86a24324182291f..de7a9350b6f289007055cbf47b90a90ac97e1a90 100644 --- a/swarm.go +++ b/swarm.go @@ -512,7 +512,7 @@ func (s *Swarm) ClosePeer(p peer.ID) error { } var errs []string - for _ = range conns { + for range conns { err := <-errCh if err != nil { errs = append(errs, err.Error()) diff --git a/swarm_dial.go b/swarm_dial.go index 14129257beffc862a403e4a631c7b768536b17fe..68d8cfecb8ae2bebd7eb264ee6972e1aa15545a2 100644 --- a/swarm_dial.go +++ b/swarm_dial.go @@ -12,8 +12,6 @@ import ( "github.com/libp2p/go-libp2p-core/transport" addrutil "github.com/libp2p/go-addr-util" - lgbl "github.com/libp2p/go-libp2p-loggables" - ma "github.com/multiformats/go-multiaddr" manet "github.com/multiformats/go-multiaddr/net" ) @@ -236,20 +234,16 @@ func (s *Swarm) DialPeer(ctx context.Context, p peer.ID) (network.Conn, error) { // It is gated by the swarm's dial synchronization systems: dialsync and // dialbackoff. func (s *Swarm) dialPeer(ctx context.Context, p peer.ID) (*Conn, error) { - log.Debugf("[%s] swarm dialing peer [%s]", s.local, p) - var logdial = lgbl.Dial("swarm", s.LocalPeer(), p, nil, nil) + log.Debugw("dialing peer", "from", s.local, "to", p) err := p.Validate() if err != nil { return nil, err } if p == s.local { - log.Event(ctx, "swarmDialSelf", logdial) return nil, ErrDialToSelf } - defer log.EventBegin(ctx, "swarmDialAttemptSync", p).Done() - // check if we already have an open (usable) connection first conn := s.bestAcceptableConnToPeer(ctx, p) if conn != nil { diff --git a/swarm_listen.go b/swarm_listen.go index 5bd1015d9964a14082dc8bc824c7e78691a77d39..c064ae851e7a7f38dd94fee79d58541aed81a20b 100644 --- a/swarm_listen.go +++ b/swarm_listen.go @@ -24,7 +24,7 @@ func (s *Swarm) Listen(addrs ...ma.Multiaddr) error { for i, e := range errs { if e != nil { - log.Warningf("listen on %s failed: %s", addrs[i], errs[i]) + log.Warnw("listening failed", "on", addrs[i], "error", errs[i]) } } @@ -111,7 +111,7 @@ func (s *Swarm) AddListenAddr(a ma.Multiaddr) error { // ignore. return default: - log.Warningf("add conn %s failed: ", err) + log.Warnw("adding connection failed", "to", a, "error", err) return } }() diff --git a/swarm_test.go b/swarm_test.go index 4e9801ad0897fb971d2a3739ff1a4573e0d07b37..6aad60006b895a9438799fd9dc1f5be6eee0454d 100644 --- a/swarm_test.go +++ b/swarm_test.go @@ -169,8 +169,6 @@ func SubtestSwarm(t *testing.T, SwarmNum int, MsgNum int) { count := 0 countShouldBe := MsgNum * (len(swarms) - 1) for stream := range streamChan { // one per peer - defer stream.Close() - // get peer on the other side p := stream.Conn().RemotePeer() @@ -196,6 +194,7 @@ func SubtestSwarm(t *testing.T, SwarmNum int, MsgNum int) { got[p] = msgCount count += msgCount + stream.Close() } if count != countShouldBe {