Unverified Commit c67b87ce authored by Steven Allen's avatar Steven Allen Committed by GitHub
Browse files

Merge pull request #400 from rargulati/add-secure-tpt-to-set

Ensure duplicate transports are filtered
parents 7d6f9521 6e72e884
...@@ -50,6 +50,7 @@ func makeMuxer(h host.Host, tpts []MsMuxC) (mux.Transport, error) { ...@@ -50,6 +50,7 @@ func makeMuxer(h host.Host, tpts []MsMuxC) (mux.Transport, error) {
if _, ok := transportSet[tptC.ID]; ok { if _, ok := transportSet[tptC.ID]; ok {
return nil, fmt.Errorf("duplicate muxer transport: %s", tptC.ID) return nil, fmt.Errorf("duplicate muxer transport: %s", tptC.ID)
} }
transportSet[tptC.ID] = struct{}{}
} }
for _, tptC := range tpts { for _, tptC := range tpts {
tpt, err := tptC.MuxC(h) tpt, err := tptC.MuxC(h)
......
package config package config
import ( import (
"context"
"testing" "testing"
host "github.com/libp2p/go-libp2p-host"
peer "github.com/libp2p/go-libp2p-peer" peer "github.com/libp2p/go-libp2p-peer"
swarmt "github.com/libp2p/go-libp2p-swarm/testing"
bhost "github.com/libp2p/go-libp2p/p2p/host/basic"
mux "github.com/libp2p/go-stream-muxer" mux "github.com/libp2p/go-stream-muxer"
yamux "github.com/whyrusleeping/go-smux-yamux" yamux "github.com/whyrusleeping/go-smux-yamux"
) )
...@@ -52,3 +56,46 @@ func TestMuxerBadTypes(t *testing.T) { ...@@ -52,3 +56,46 @@ func TestMuxerBadTypes(t *testing.T) {
} }
} }
} }
func TestCatchDuplicateTransportsMuxer(t *testing.T) {
ctx := context.Background()
h := bhost.New(swarmt.GenSwarm(t, ctx))
yamuxMuxer, err := MuxerConstructor(yamux.DefaultTransport)
if err != nil {
t.Fatal(err)
}
var tests = map[string]struct {
h host.Host
transports []MsMuxC
expectedError string
}{
"no duplicate transports": {
h: h,
transports: []MsMuxC{MsMuxC{yamuxMuxer, "yamux"}},
expectedError: "",
},
"duplicate transports": {
h: h,
transports: []MsMuxC{
MsMuxC{yamuxMuxer, "yamux"},
MsMuxC{yamuxMuxer, "yamux"},
},
expectedError: "duplicate muxer transport: yamux",
},
}
for testName, test := range tests {
t.Run(testName, func(t *testing.T) {
_, err = makeMuxer(test.h, test.transports)
if err != nil {
if err.Error() != test.expectedError {
t.Errorf(
"\nexpected: [%v]\nactual: [%v]\n",
test.expectedError,
err,
)
}
}
})
}
}
...@@ -61,6 +61,7 @@ func makeSecurityTransport(h host.Host, tpts []MsSecC) (security.Transport, erro ...@@ -61,6 +61,7 @@ func makeSecurityTransport(h host.Host, tpts []MsSecC) (security.Transport, erro
if _, ok := transportSet[tptC.ID]; ok { if _, ok := transportSet[tptC.ID]; ok {
return nil, fmt.Errorf("duplicate security transport: %s", tptC.ID) return nil, fmt.Errorf("duplicate security transport: %s", tptC.ID)
} }
transportSet[tptC.ID] = struct{}{}
} }
for _, tptC := range tpts { for _, tptC := range tpts {
tpt, err := tptC.SecC(h) tpt, err := tptC.SecC(h)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment