Remove more os.Exit calls and give a more reliable wait for stop function

This commit is contained in:
Nate Brown
2025-04-02 09:51:59 -05:00
committed by JackDoan
parent f77fe74192
commit 6592a07b51
13 changed files with 161 additions and 81 deletions

View File

@@ -686,16 +686,25 @@ func (t *tun) updateRoutes(r netlink.RouteUpdate) {
func (t *tun) Close() error {
if t.routeChan != nil {
close(t.routeChan)
}
if t.ReadWriteCloser != nil {
_ = t.ReadWriteCloser.Close()
t.routeChan = nil
}
if t.ioctlFd > 0 {
_ = os.NewFile(t.ioctlFd, "ioctlFd").Close()
err := os.NewFile(t.ioctlFd, "ioctlFd").Close()
if err != nil {
t.l.WithField("error", err).Error("Failed to close ioctl fd")
}
t.ioctlFd = 0
}
if t.ReadWriteCloser != nil {
err := t.ReadWriteCloser.Close()
if err != nil {
t.l.WithField("error", err).Error("Failed to close tun file")
return err
}
t.ReadWriteCloser = nil
}
return nil
}