JackDoan 6 месяцев назад
Родитель
Сommit
2c30f016a4
1 измененных файлов с 5 добавлено и 1 удалено
  1. 5 1
      overlay/tun_linux.go

+ 5 - 1
overlay/tun_linux.go

@@ -71,8 +71,12 @@ type ifreqQLEN struct {
 }
 
 func newTunFromFd(c *config.C, l *logrus.Logger, deviceFd int, vpnNetworks []netip.Prefix) (*tun, error) {
-	//todo if this actually gets called, it should check+set O_NONBLOCK
 	file := os.NewFile(uintptr(deviceFd), "/dev/net/tun")
+	err := unix.SetNonblock(deviceFd, true)
+	if err != nil {
+		_ = file.Close()
+		return nil, err
+	}
 
 	t, err := newTunGeneric(c, l, file, vpnNetworks)
 	if err != nil {