From 9c68f44a1418c96a6da7992652cf392f6e868a3b Mon Sep 17 00:00:00 2001 From: Jeromy Date: Wed, 6 Apr 2016 12:14:06 -0700 Subject: [PATCH] version multistream protocol tags --- p2p/net/conn/dial_test.go | 30 ++++++++++++++++++++++++++++++ p2p/net/conn/listen.go | 4 ++-- p2p/net/swarm/swarm.go | 4 ++-- p2p/protocol/identify/id.go | 2 +- p2p/protocol/ping/ping.go | 2 +- p2p/protocol/relay/relay.go | 2 +- 6 files changed, 37 insertions(+), 7 deletions(-) diff --git a/p2p/net/conn/dial_test.go b/p2p/net/conn/dial_test.go index 9f4923e..c91fd5b 100644 --- a/p2p/net/conn/dial_test.go +++ b/p2p/net/conn/dial_test.go @@ -13,6 +13,7 @@ import ( peer "github.com/ipfs/go-libp2p/p2p/peer" tu "github.com/ipfs/go-libp2p/testutil" + msmux "gx/ipfs/QmUeEcYJrzAEKdQXjzTxCgNZgc9sRuwharsvzzm5Gd2oGB/go-multistream" context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context" ma "gx/ipfs/QmcobAGsCjYt5DXoq9et9L8yR8er7o7Cu3DTvpaq12jYSz/go-multiaddr" ) @@ -319,3 +320,32 @@ func TestDialerCloseEarlySecure(t *testing.T) { // t.Skip("Skipping in favor of another test") testDialerCloseEarly(t, true) } + +func TestMultistreamHeader(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + p1 := tu.RandPeerNetParamsOrFatal(t) + + l1, err := Listen(ctx, p1.Addr, p1.ID, p1.PrivKey) + if err != nil { + t.Fatal(err) + } + + p1.Addr = l1.Multiaddr() // Addr has been determined by kernel. + + go func() { + _, _ = l1.Accept() + }() + + con, err := net.Dial("tcp", l1.Addr().String()) + if err != nil { + t.Fatal(err) + } + defer con.Close() + + err = msmux.SelectProtoOrFail(SecioTag, con) + if err != nil { + t.Fatal(err) + } +} diff --git a/p2p/net/conn/listen.go b/p2p/net/conn/listen.go index b5ea522..33b0975 100644 --- a/p2p/net/conn/listen.go +++ b/p2p/net/conn/listen.go @@ -17,8 +17,8 @@ import ( ma "gx/ipfs/QmcobAGsCjYt5DXoq9et9L8yR8er7o7Cu3DTvpaq12jYSz/go-multiaddr" ) -const SecioTag = "/secio" -const NoEncryptionTag = "/plaintext" +const SecioTag = "/secio/1.0.0" +const NoEncryptionTag = "/plaintext/1.0.0" // ConnWrapper is any function that wraps a raw multiaddr connection type ConnWrapper func(transport.Conn) transport.Conn diff --git a/p2p/net/swarm/swarm.go b/p2p/net/swarm/swarm.go index 543c01c..b8e041e 100644 --- a/p2p/net/swarm/swarm.go +++ b/p2p/net/swarm/swarm.go @@ -46,8 +46,8 @@ func init() { LogOutput: ioutil.Discard, } - msstpt.AddTransport("/yamux", ymxtpt) - msstpt.AddTransport("/spdystream", spdy.Transport) + msstpt.AddTransport("/yamux/1.0.0", ymxtpt) + msstpt.AddTransport("/spdy/3.1.0", spdy.Transport) PSTransport = msstpt } diff --git a/p2p/protocol/identify/id.go b/p2p/protocol/identify/id.go index 2f2dbef..0eeb6f2 100644 --- a/p2p/protocol/identify/id.go +++ b/p2p/protocol/identify/id.go @@ -22,7 +22,7 @@ import ( var log = logging.Logger("net/identify") // ID is the protocol.ID of the Identify Service. -const ID = "/ipfs/identify" +const ID = "/ipfs/identify/1.0.0" // LibP2PVersion holds the current protocol version for a client running this code // TODO(jbenet): fix the versioning mess. diff --git a/p2p/protocol/ping/ping.go b/p2p/protocol/ping/ping.go index 4b2200f..7cb18b0 100644 --- a/p2p/protocol/ping/ping.go +++ b/p2p/protocol/ping/ping.go @@ -18,7 +18,7 @@ var log = logging.Logger("ping") const PingSize = 32 -const ID = "/ipfs/ping" +const ID = "/ipfs/ping/1.0.0" type PingService struct { Host host.Host diff --git a/p2p/protocol/relay/relay.go b/p2p/protocol/relay/relay.go index 7c2f7c7..cd69e41 100644 --- a/p2p/protocol/relay/relay.go +++ b/p2p/protocol/relay/relay.go @@ -17,7 +17,7 @@ import ( var log = logging.Logger("github.com/ipfs/go-libp2p/p2p/protocol/relay") // ID is the protocol.ID of the Relay Service. -const ID protocol.ID = "/ipfs/relay" +const ID protocol.ID = "/ipfs/relay/0.1.0" // Relay is a structure that implements ProtocolRelay. // It is a simple relay service which forwards traffic -- GitLab