catch EPERM sendmsg errors for the very first packet on Linux (#4111)

This commit is contained in:
Marten Seemann
2023-10-17 15:23:33 +07:00
committed by GitHub
parent 262cf0a592
commit b344940f06
6 changed files with 57 additions and 4 deletions

View File

@@ -97,3 +97,14 @@ func isGSOError(err error) bool {
}
return false
}
// The first sendmsg call on a new UDP socket sometimes errors on Linux.
// It's not clear why this happens.
// See https://github.com/golang/go/issues/63322.
func isPermissionError(err error) bool {
var serr *os.SyscallError
if errors.As(err, &serr) {
return serr.Syscall == "sendmsg" && serr.Err == unix.EPERM
}
return false
}