1
0
forked from rosa/hakurei

internal/netlink: optional recvmsg without netpoll

For draining the socket receive buffer.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2026-03-30 23:18:43 +09:00
parent f03c0fb249
commit a854719b9f

View File

@@ -135,6 +135,23 @@ func (c *Conn) Recvmsg(
var n int var n int
data = c.buf[:] data = c.buf[:]
if ctx == nil {
rcErr := c.raw.Control(func(fd uintptr) {
n, _, recvflags, from, err = syscall.Recvmsg(int(fd), data, nil, flags)
})
if n >= 0 {
data = data[:n]
}
if err != nil {
err = os.NewSyscallError("recvmsg", err)
} else {
err = rcErr
}
return
}
done := make(chan error, 1) done := make(chan error, 1)
go func() { go func() {
rcErr := c.raw.Read(func(fd uintptr) (done bool) { rcErr := c.raw.Read(func(fd uintptr) (done bool) {