diff --git a/p2p/net/conn/dial.go b/p2p/net/conn/dial.go index 0cf378968377556113a656ce9ed073887379e4d8..7654bc6d04ad60898ff3dc0928b10346ed8622c8 100644 --- a/p2p/net/conn/dial.go +++ b/p2p/net/conn/dial.go @@ -4,6 +4,7 @@ import ( "fmt" "math/rand" "strings" + "time" addrutil "github.com/ipfs/go-libp2p/p2p/net/swarm/addr" transport "gx/ipfs/QmRHqYZs3Diy8YC3bW16zvs8VDDwS2ARKBuKwALxEMqibc/go-libp2p-transport" @@ -68,12 +69,16 @@ func (d *Dialer) Dial(ctx context.Context, raddr ma.Multiaddr, remote peer.ID) ( cryptoProtoChoice = NoEncryptionTag } + maconn.SetReadDeadline(time.Now().Add(NegotiateReadTimeout)) + err = msmux.SelectProtoOrFail(cryptoProtoChoice, maconn) if err != nil { errOut = err return } + maconn.SetReadDeadline(time.Time{}) + c, err := newSingleConn(ctx, d.LocalPeer, remote, maconn) if err != nil { maconn.Close()