Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
go-libp2p
Commits
fe95f0a0
Commit
fe95f0a0
authored
Apr 06, 2016
by
Jeromy Johnson
Browse files
Merge pull request #33 from ipfs/feat/multistream-crypto
add multistream select to select which crypto to use
parents
c7cc7482
cb974e87
Changes
7
Hide whitespace changes
Inline
Side-by-side
p2p/net/conn/dial.go
View file @
fe95f0a0
...
...
@@ -10,6 +10,7 @@ import (
addrutil
"github.com/ipfs/go-libp2p/p2p/net/swarm/addr"
transport
"github.com/ipfs/go-libp2p/p2p/net/transport"
peer
"github.com/ipfs/go-libp2p/p2p/peer"
msmux
"gx/ipfs/QmUeEcYJrzAEKdQXjzTxCgNZgc9sRuwharsvzzm5Gd2oGB/go-multistream"
manet
"gx/ipfs/QmYVqhVfbK4BKvbW88Lhm26b3ud14sTBvcm1H7uWUx1Fkp/go-multiaddr-net"
context
"gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
ma
"gx/ipfs/QmcobAGsCjYt5DXoq9et9L8yR8er7o7Cu3DTvpaq12jYSz/go-multiaddr"
...
...
@@ -62,6 +63,17 @@ func (d *Dialer) Dial(ctx context.Context, raddr ma.Multiaddr, remote peer.ID) (
maconn
=
d
.
Wrapper
(
maconn
)
}
cryptoProtoChoice
:=
SecioTag
if
!
EncryptConnections
{
cryptoProtoChoice
=
NoEncryptionTag
}
err
=
msmux
.
SelectProtoOrFail
(
cryptoProtoChoice
,
maconn
)
if
err
!=
nil
{
errOut
=
err
return
}
c
,
err
:=
newSingleConn
(
ctx
,
d
.
LocalPeer
,
remote
,
maconn
)
if
err
!=
nil
{
maconn
.
Close
()
...
...
p2p/net/conn/dial_test.go
View file @
fe95f0a0
...
...
@@ -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
)
}
}
p2p/net/conn/listen.go
View file @
fe95f0a0
...
...
@@ -11,11 +11,15 @@ import (
peer
"github.com/ipfs/go-libp2p/p2p/peer"
"gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess"
goprocessctx
"gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/context"
msmux
"gx/ipfs/QmUeEcYJrzAEKdQXjzTxCgNZgc9sRuwharsvzzm5Gd2oGB/go-multistream"
tec
"gx/ipfs/QmWHgLqrghM9zw77nF6gdvT9ExQ2RB9pLxkd8sDHZf1rWb/go-temp-err-catcher"
context
"gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
ma
"gx/ipfs/QmcobAGsCjYt5DXoq9et9L8yR8er7o7Cu3DTvpaq12jYSz/go-multiaddr"
)
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
...
...
@@ -31,6 +35,8 @@ type listener struct {
wrapper
ConnWrapper
proc
goprocess
.
Process
mux
*
msmux
.
MultistreamMuxer
}
func
(
l
*
listener
)
teardown
()
error
{
...
...
@@ -98,6 +104,11 @@ func (l *listener) Accept() (net.Conn, error) {
maconn
=
l
.
wrapper
(
maconn
)
}
_
,
_
,
err
=
l
.
mux
.
Negotiate
(
maconn
)
if
err
!=
nil
{
return
nil
,
err
}
c
,
err
:=
newSingleConn
(
ctx
,
l
.
local
,
""
,
maconn
)
if
err
!=
nil
{
if
catcher
.
IsTemporary
(
err
)
{
...
...
@@ -150,9 +161,16 @@ func WrapTransportListener(ctx context.Context, ml transport.Listener, local pee
Listener
:
ml
,
local
:
local
,
privk
:
sk
,
mux
:
msmux
.
NewMultistreamMuxer
(),
}
l
.
proc
=
goprocessctx
.
WithContextAndTeardown
(
ctx
,
l
.
teardown
)
if
EncryptConnections
{
l
.
mux
.
AddHandler
(
SecioTag
,
nil
)
}
else
{
l
.
mux
.
AddHandler
(
NoEncryptionTag
,
nil
)
}
log
.
Debugf
(
"Conn Listener on %s"
,
l
.
Multiaddr
())
log
.
Event
(
ctx
,
"swarmListen"
,
l
)
return
l
,
nil
...
...
p2p/net/swarm/swarm.go
View file @
fe95f0a0
...
...
@@ -46,8 +46,8 @@ func init() {
LogOutput
:
ioutil
.
Discard
,
}
msstpt
.
AddTransport
(
"/yamux"
,
ymxtpt
)
msstpt
.
AddTransport
(
"/spdy
stream
"
,
spdy
.
Transport
)
msstpt
.
AddTransport
(
"/yamux
/1.0.0
"
,
ymxtpt
)
msstpt
.
AddTransport
(
"/spdy
/3.1.0
"
,
spdy
.
Transport
)
PSTransport
=
msstpt
}
...
...
p2p/protocol/identify/id.go
View file @
fe95f0a0
...
...
@@ -22,7 +22,7 @@ import (
var
log
=
logging
.
Logger
(
"net/identify"
)
// ID is the protocol.ID of the Identify Service.
const
ID
=
"/ipfs/id
entify
"
const
ID
=
"/ipfs/id
/1.0.0
"
// LibP2PVersion holds the current protocol version for a client running this code
// TODO(jbenet): fix the versioning mess.
...
...
p2p/protocol/ping/ping.go
View file @
fe95f0a0
...
...
@@ -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
...
...
p2p/protocol/relay/relay.go
View file @
fe95f0a0
...
...
@@ -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
/line/0.1.0
"
// Relay is a structure that implements ProtocolRelay.
// It is a simple relay service which forwards traffic
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment