/*
- * Copyright (C) 2005-2009 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2010 Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
if (iovcnt == 0)
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)
ret = mcast_receiver_setup(purd->fd, iface);
if (ret < 0) {
close(purd->fd);
- return ret;
+ goto err;
}
ret = mark_fd_nonblocking(purd->fd);