wgengine: don't double-close tundev on setup error.
Part of #368. Signed-off-by: David Anderson <danderson@tailscale.com>reviewable/pr373/r1
parent
efc1feedc9
commit
e83d02ffd1
|
@ -105,8 +105,6 @@ func NewUserspaceEngine(logf logger.Logf, tunname string, listenPort uint16) (En
|
||||||
|
|
||||||
e, err := NewUserspaceEngineAdvanced(logf, tundev, router.New, listenPort)
|
e, err := NewUserspaceEngineAdvanced(logf, tundev, router.New, listenPort)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logf("NewUserspaceEngineAdv: %v", err)
|
|
||||||
tundev.Close()
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return e, err
|
return e, err
|
||||||
|
@ -134,6 +132,7 @@ func newUserspaceEngineAdvanced(logf logger.Logf, tundev tun.Device, routerGen R
|
||||||
|
|
||||||
mon, err := monitor.New(logf, func() { e.LinkChange(false) })
|
mon, err := monitor.New(logf, func() { e.LinkChange(false) })
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
tundev.Close()
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
e.linkMon = mon
|
e.linkMon = mon
|
||||||
|
@ -151,6 +150,7 @@ func newUserspaceEngineAdvanced(logf logger.Logf, tundev tun.Device, routerGen R
|
||||||
}
|
}
|
||||||
e.magicConn, err = magicsock.Listen(magicsockOpts)
|
e.magicConn, err = magicsock.Listen(magicsockOpts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
tundev.Close()
|
||||||
return nil, fmt.Errorf("wgengine: %v", err)
|
return nil, fmt.Errorf("wgengine: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -204,6 +204,7 @@ func newUserspaceEngineAdvanced(logf logger.Logf, tundev tun.Device, routerGen R
|
||||||
SkipBindUpdate: true,
|
SkipBindUpdate: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// wgdev takes ownership of tundev, will close it when closed.
|
||||||
e.wgdev = device.NewDevice(e.tundev, opts)
|
e.wgdev = device.NewDevice(e.tundev, opts)
|
||||||
defer func() {
|
defer func() {
|
||||||
if reterr != nil {
|
if reterr != nil {
|
||||||
|
|
Loading…
Reference in New Issue