updated bind

This commit is contained in:
Ryan Huber
2025-11-04 04:39:07 +00:00
parent 2b5aec9a18
commit 0864852d33

View File

@@ -456,7 +456,19 @@ func (s *StdNetBind) send4(conn *net.UDPConn, pc *ipv4.PacketConn, ep Endpoint,
if runtime.GOOS == "linux" && pc != nil { if runtime.GOOS == "linux" && pc != nil {
for { for {
n, err = pc.WriteBatch((*msgs)[start:len(bufs)], 0) n, err = pc.WriteBatch((*msgs)[start:len(bufs)], 0)
if err != nil || n == len((*msgs)[start:len(bufs)]) { if err != nil {
if errors.Is(err, syscall.EAFNOSUPPORT) {
for j := start; j < len(bufs); j++ {
_, _, werr := conn.WriteMsgUDP(bufs[j], (*msgs)[j].OOB, ua)
if werr != nil {
err = werr
break
}
}
}
break
}
if n == len((*msgs)[start:len(bufs)]) {
break break
} }
start += n start += n
@@ -494,7 +506,19 @@ func (s *StdNetBind) send6(conn *net.UDPConn, pc *ipv6.PacketConn, ep Endpoint,
if runtime.GOOS == "linux" && pc != nil { if runtime.GOOS == "linux" && pc != nil {
for { for {
n, err = pc.WriteBatch((*msgs)[start:len(bufs)], 0) n, err = pc.WriteBatch((*msgs)[start:len(bufs)], 0)
if err != nil || n == len((*msgs)[start:len(bufs)]) { if err != nil {
if errors.Is(err, syscall.EAFNOSUPPORT) {
for j := start; j < len(bufs); j++ {
_, _, werr := conn.WriteMsgUDP(bufs[j], (*msgs)[j].OOB, ua)
if werr != nil {
err = werr
break
}
}
}
break
}
if n == len((*msgs)[start:len(bufs)]) {
break break
} }
start += n start += n