@@ -29,11 +29,18 @@ var _ transport.Transport = (*WebsocketTransport)(nil)
29
29
30
30
// WebsocketTransport is the actual go-libp2p transport
31
31
type WebsocketTransport struct {
32
- Upgrader transport.Upgrader
32
+ upgrader transport.Upgrader
33
+ rcmgr network.ResourceManager
33
34
}
34
35
35
- func New (u transport.Upgrader ) * WebsocketTransport {
36
- return & WebsocketTransport {u }
36
+ func New (u transport.Upgrader , rcmgr network.ResourceManager ) * WebsocketTransport {
37
+ if rcmgr == nil {
38
+ rcmgr = network .NullResourceManager
39
+ }
40
+ return & WebsocketTransport {
41
+ upgrader : u ,
42
+ rcmgr : rcmgr ,
43
+ }
37
44
}
38
45
39
46
func (t * WebsocketTransport ) CanDial (a ma.Multiaddr ) bool {
@@ -49,9 +56,14 @@ func (t *WebsocketTransport) Proxy() bool {
49
56
}
50
57
51
58
func (t * WebsocketTransport ) Dial (ctx context.Context , raddr ma.Multiaddr , p peer.ID ) (transport.CapableConn , error ) {
59
+ connScope , err := t .rcmgr .OpenConnection (network .DirOutbound , true )
60
+ if err != nil {
61
+ return nil , err
62
+ }
52
63
macon , err := t .maDial (ctx , raddr )
53
64
if err != nil {
65
+ connScope .Done ()
54
66
return nil , err
55
67
}
56
- return t .Upgrader .Upgrade (ctx , t , macon , network .DirOutbound , p )
68
+ return t .upgrader .Upgrade (ctx , t , macon , network .DirOutbound , p , connScope )
57
69
}
0 commit comments