Fix darwin batch loop not exit on EBADF
This commit is contained in:
parent
90ea7a0b69
commit
c81ce6d358
2 changed files with 5 additions and 2 deletions
|
|
@ -3,6 +3,9 @@
|
||||||
package tun
|
package tun
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
|
"syscall"
|
||||||
|
|
||||||
"github.com/sagernet/gvisor/pkg/buffer"
|
"github.com/sagernet/gvisor/pkg/buffer"
|
||||||
"github.com/sagernet/gvisor/pkg/tcpip"
|
"github.com/sagernet/gvisor/pkg/tcpip"
|
||||||
gHdr "github.com/sagernet/gvisor/pkg/tcpip/header"
|
gHdr "github.com/sagernet/gvisor/pkg/tcpip/header"
|
||||||
|
|
@ -169,7 +172,7 @@ func (m *Mixed) batchLoopDarwin(darwinTUN DarwinTUN) {
|
||||||
for {
|
for {
|
||||||
buffers, err := darwinTUN.BatchRead()
|
buffers, err := darwinTUN.BatchRead()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if E.IsClosed(err) {
|
if E.IsClosed(err) || errors.Is(err, syscall.EBADF) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
m.logger.Error(E.Cause(err, "batch read packet"))
|
m.logger.Error(E.Cause(err, "batch read packet"))
|
||||||
|
|
|
||||||
|
|
@ -269,7 +269,7 @@ func (s *System) batchLoopDarwin(darwinTUN DarwinTUN) {
|
||||||
for {
|
for {
|
||||||
buffers, err := darwinTUN.BatchRead()
|
buffers, err := darwinTUN.BatchRead()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if E.IsClosed(err) {
|
if E.IsClosed(err) || errors.Is(err, syscall.EBADF) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
s.logger.Error(E.Cause(err, "batch read packet"))
|
s.logger.Error(E.Cause(err, "batch read packet"))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue