diff --git a/browser_integration_browser_test.go b/browser_integration_browser_test.go index 6abc9da..f840537 100644 --- a/browser_integration_browser_test.go +++ b/browser_integration_browser_test.go @@ -30,7 +30,7 @@ func TestInBrowser(t *testing.T) { if err != nil { t.Fatal(err) } - tpt := New(u) + tpt := New(u, nil) addr, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/5555/ws") if err != nil { t.Fatal("could not parse multiaddress:" + err.Error()) diff --git a/browser_integration_native_test.go b/browser_integration_native_test.go index a817951..3e7410b 100644 --- a/browser_integration_native_test.go +++ b/browser_integration_native_test.go @@ -56,7 +56,7 @@ func TestInBrowser(t *testing.T) { if err != nil { t.Error("SERVER:", err) } - tpt := New(u) + tpt := New(u, nil) addr, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/5555/ws") if err != nil { t.Error("SERVER:", err) diff --git a/go.mod b/go.mod index 7aa63ab..6c7391c 100644 --- a/go.mod +++ b/go.mod @@ -3,10 +3,10 @@ module github.com/libp2p/go-ws-transport require ( github.com/gorilla/websocket v1.4.2 github.com/libp2p/go-conn-security-multistream v0.3.0 - github.com/libp2p/go-libp2p-core v0.13.1-0.20220104083644-a3dd401efe36 + github.com/libp2p/go-libp2p-core v0.13.1-0.20220104095837-d2ff78890732 github.com/libp2p/go-libp2p-mplex v0.4.1 github.com/libp2p/go-libp2p-testing v0.5.0 - github.com/libp2p/go-libp2p-transport-upgrader v0.6.1-0.20220104084635-5fc0a74b41f0 + github.com/libp2p/go-libp2p-transport-upgrader v0.6.1-0.20220104100354-4827c9678afa github.com/multiformats/go-multiaddr v0.4.1 github.com/multiformats/go-multiaddr-fmt v0.1.0 ) diff --git a/go.sum b/go.sum index 7e6c13f..5dc3128 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,8 @@ github.com/libp2p/go-libp2p-core v0.3.0/go.mod h1:ACp3DmS3/N64c2jDzcV429ukDpicbL github.com/libp2p/go-libp2p-core v0.5.0/go.mod h1:49XGI+kc38oGVwqSBhDEwytaAxgZasHhFfQKibzTls0= github.com/libp2p/go-libp2p-core v0.8.0/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= github.com/libp2p/go-libp2p-core v0.10.0/go.mod h1:ECdxehoYosLYHgDDFa2N4yE8Y7aQRAMf0sX9mf2sbGg= -github.com/libp2p/go-libp2p-core v0.13.1-0.20220104083644-a3dd401efe36 h1:b/pMmgc5EV+dqSc+MjkX5xPa1nV6EKiOb0L0XT03Lic= -github.com/libp2p/go-libp2p-core v0.13.1-0.20220104083644-a3dd401efe36/go.mod h1:KlkHsZ0nKerWsXLZJm3LfFQwusI5k3iN4BgtYTE4IYE= +github.com/libp2p/go-libp2p-core v0.13.1-0.20220104095837-d2ff78890732 h1:txE0rns6jKj4Zwx+I6k1dHLvZyA0nntk3WBZLajDeLQ= +github.com/libp2p/go-libp2p-core v0.13.1-0.20220104095837-d2ff78890732/go.mod h1:KlkHsZ0nKerWsXLZJm3LfFQwusI5k3iN4BgtYTE4IYE= github.com/libp2p/go-libp2p-mplex v0.4.1 h1:/pyhkP1nLwjG3OM+VuaNJkQT/Pqq73WzB3aDN3Fx1sc= github.com/libp2p/go-libp2p-mplex v0.4.1/go.mod h1:cmy+3GfqfM1PceHTLL7zQzAAYaryDu6iPSC+CIb094g= github.com/libp2p/go-libp2p-pnet v0.2.0 h1:J6htxttBipJujEjz1y0a5+eYoiPcFHhSYHH6na5f0/k= @@ -88,8 +88,8 @@ github.com/libp2p/go-libp2p-testing v0.1.2-0.20200422005655-8775583591d8/go.mod github.com/libp2p/go-libp2p-testing v0.4.0/go.mod h1:Q+PFXYoiYFN5CAEG2w3gLPEzotlKsNSbKQ/lImlOWF0= github.com/libp2p/go-libp2p-testing v0.5.0 h1:bTjC29TTQ/ODq0ld3+0KLq3irdA5cAH3OMbRi0/QsvE= github.com/libp2p/go-libp2p-testing v0.5.0/go.mod h1:QBk8fqIL1XNcno/l3/hhaIEn4aLRijpYOR+zVjjlh+A= -github.com/libp2p/go-libp2p-transport-upgrader v0.6.1-0.20220104084635-5fc0a74b41f0 h1:eD/QJCpcImYOUl6MdBuxMByVaEe5VMm463zJG6oUg9o= -github.com/libp2p/go-libp2p-transport-upgrader v0.6.1-0.20220104084635-5fc0a74b41f0/go.mod h1:ByIyNe8asQhgcyIHetb4f+UgV+hDrA8pQ3L/TgNs+RI= +github.com/libp2p/go-libp2p-transport-upgrader v0.6.1-0.20220104100354-4827c9678afa h1:ojcP3ncP87psnSbU0G8a6PZ1x4Cy7MSeabRpc6UeqAY= +github.com/libp2p/go-libp2p-transport-upgrader v0.6.1-0.20220104100354-4827c9678afa/go.mod h1:svrK90F1diEptWeVfeo5T2URdWBQrqnzPEvBst9J6w8= github.com/libp2p/go-maddr-filter v0.1.0/go.mod h1:VzZhTXkMucEGGEOSKddrwGiOv0tUhgnKqNEmIAz/bPU= github.com/libp2p/go-mplex v0.3.0 h1:U1T+vmCYJaEoDJPV1aq31N56hS+lJgb397GsylNSgrU= github.com/libp2p/go-mplex v0.3.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ6msjvYQ= diff --git a/websocket.go b/websocket.go index 279a90a..a620904 100644 --- a/websocket.go +++ b/websocket.go @@ -30,10 +30,17 @@ var _ transport.Transport = (*WebsocketTransport)(nil) // WebsocketTransport is the actual go-libp2p transport type WebsocketTransport struct { upgrader transport.Upgrader + rcmgr network.ResourceManager } -func New(u transport.Upgrader) *WebsocketTransport { - return &WebsocketTransport{u} +func New(u transport.Upgrader, rcmgr network.ResourceManager) *WebsocketTransport { + if rcmgr == nil { + rcmgr = network.NullResourceManager + } + return &WebsocketTransport{ + upgrader: u, + rcmgr: rcmgr, + } } func (t *WebsocketTransport) CanDial(a ma.Multiaddr) bool { @@ -49,9 +56,14 @@ func (t *WebsocketTransport) Proxy() bool { } func (t *WebsocketTransport) Dial(ctx context.Context, raddr ma.Multiaddr, p peer.ID) (transport.CapableConn, error) { + connScope, err := t.rcmgr.OpenConnection(network.DirOutbound, true) + if err != nil { + return nil, err + } macon, err := t.maDial(ctx, raddr) if err != nil { + connScope.Done() return nil, err } - return t.upgrader.Upgrade(ctx, t, macon, network.DirOutbound, p) + return t.upgrader.Upgrade(ctx, t, macon, network.DirOutbound, p, connScope) } diff --git a/websocket_test.go b/websocket_test.go index e6dd710..a9ac918 100644 --- a/websocket_test.go +++ b/websocket_test.go @@ -47,12 +47,12 @@ func TestWebsocketTransport(t *testing.T) { if err != nil { t.Fatal(err) } - ta := New(ua) + ta := New(ua, nil) ub, err := tptu.New(newSecureMuxer(t, "peerB"), new(mplex.Transport)) if err != nil { t.Fatal(err) } - tb := New(ub) + tb := New(ub, nil) zero := "/ip4/127.0.0.1/tcp/0/ws" ttransport.SubtestTransport(t, ta, tb, zero, "peerA")