diff --git a/udp/udp_linux.go b/udp/udp_linux.go index 5b5d4ea1..1e7aa98d 100644 --- a/udp/udp_linux.go +++ b/udp/udp_linux.go @@ -184,11 +184,14 @@ func (u *StdConn) ReadMulti(msgs []rawMessage) (int, error) { 0, 0, ) - - if err != 0 { - if err == unix.EAGAIN || err == unix.EINTR { + if err == unix.EAGAIN || err == unix.EINTR { + if n == 0 { continue + } else { + //ran out of time, but have some messages to return + return int(n), nil } + } else if err != 0 { return 0, &net.OpError{Op: "recvmmsg", Err: err} }