- goto err;
- ret = para_readv(purd->fd, iov, iovcnt);
- /* EAGAIN is possible even if FD_ISSET */
- if (ret < 0 && is_errno(-ret, EAGAIN))
- return;
- if (ret == 0)
- ret = -E_RECV_EOF;
- if (ret < 0)
- goto err;
- packet_size = ret;
- ret = udp_check_eof(packet_size, iov);
+ goto out;
+ ret = readv_nonblock(rn->fd, iov, iovcnt, &s->rfds, &num_bytes);
+ if (num_bytes == 0)
+ goto out;
+ readv_ret = ret;
+ ret = udp_check_eof(num_bytes, iov);