@@ -21,6 +21,7 @@ import (
21
21
"tailscale.com/ipn/ipnstate"
22
22
"tailscale.com/net/connstats"
23
23
"tailscale.com/net/dns"
24
+ "tailscale.com/net/netmon"
24
25
"tailscale.com/net/netns"
25
26
"tailscale.com/net/tsdial"
26
27
"tailscale.com/net/tstun"
@@ -33,7 +34,6 @@ import (
33
34
"tailscale.com/wgengine"
34
35
"tailscale.com/wgengine/filter"
35
36
"tailscale.com/wgengine/magicsock"
36
- "tailscale.com/wgengine/monitor"
37
37
"tailscale.com/wgengine/netstack"
38
38
"tailscale.com/wgengine/router"
39
39
"tailscale.com/wgengine/wgcfg/nmcfg"
@@ -127,7 +127,7 @@ func NewConn(options *Options) (conn *Conn, err error) {
127
127
AllowedIPs : options .Addresses ,
128
128
}
129
129
130
- wireguardMonitor , err := monitor .New (Logger (options .Logger .Named ("wgmonitor" )))
130
+ wireguardMonitor , err := netmon .New (Logger (options .Logger .Named ("wgmonitor" )))
131
131
if err != nil {
132
132
return nil , xerrors .Errorf ("create wireguard link monitor: %w" , err )
133
133
}
@@ -141,9 +141,9 @@ func NewConn(options *Options) (conn *Conn, err error) {
141
141
Logf : Logger (options .Logger .Named ("tsdial" )),
142
142
}
143
143
wireguardEngine , err := wgengine .NewUserspaceEngine (Logger (options .Logger .Named ("wgengine" )), wgengine.Config {
144
- LinkMonitor : wireguardMonitor ,
145
- Dialer : dialer ,
146
- ListenPort : options .ListenPort ,
144
+ NetMon : wireguardMonitor ,
145
+ Dialer : dialer ,
146
+ ListenPort : options .ListenPort ,
147
147
})
148
148
if err != nil {
149
149
return nil , xerrors .Errorf ("create wgengine: %w" , err )
@@ -312,7 +312,7 @@ type Conn struct {
312
312
netMap * netmap.NetworkMap
313
313
netStack * netstack.Impl
314
314
magicConn * magicsock.Conn
315
- wireguardMonitor * monitor. Mon
315
+ wireguardMonitor * netmon. Monitor
316
316
wireguardRouter * router.Config
317
317
wireguardEngine wgengine.Engine
318
318
listeners map [listenKey ]* listener
@@ -389,6 +389,11 @@ func (c *Conn) RemoveAllPeers() error {
389
389
func (c * Conn ) UpdateNodes (nodes []* Node , replacePeers bool ) error {
390
390
c .mutex .Lock ()
391
391
defer c .mutex .Unlock ()
392
+
393
+ if c .isClosed () {
394
+ return xerrors .New ("connection closed" )
395
+ }
396
+
392
397
status := c .Status ()
393
398
if replacePeers {
394
399
c .netMap .Peers = []* tailcfg.Node {}
0 commit comments