diff --git a/stack_mixed.go b/stack_mixed.go index 083ae97..6518cd0 100644 --- a/stack_mixed.go +++ b/stack_mixed.go @@ -3,6 +3,9 @@ package tun import ( + "errors" + "syscall" + "github.com/sagernet/gvisor/pkg/buffer" "github.com/sagernet/gvisor/pkg/tcpip" gHdr "github.com/sagernet/gvisor/pkg/tcpip/header" @@ -169,7 +172,7 @@ func (m *Mixed) batchLoopDarwin(darwinTUN DarwinTUN) { for { buffers, err := darwinTUN.BatchRead() if err != nil { - if E.IsClosed(err) { + if E.IsClosed(err) || errors.Is(err, syscall.EBADF) { return } m.logger.Error(E.Cause(err, "batch read packet")) diff --git a/stack_system.go b/stack_system.go index f74fef9..fa54db3 100644 --- a/stack_system.go +++ b/stack_system.go @@ -269,7 +269,7 @@ func (s *System) batchLoopDarwin(darwinTUN DarwinTUN) { for { buffers, err := darwinTUN.BatchRead() if err != nil { - if E.IsClosed(err) { + if E.IsClosed(err) || errors.Is(err, syscall.EBADF) { return } s.logger.Error(E.Cause(err, "batch read packet"))