ufd.fd = fd;
ufd.events = POLLIN;
ufd.revents = 0;
- if (poll(&ufd, 1, 0) <= 0 || IS_EXCEPTION(ufd.revents))
+
+ int ret;
+ OSI_NO_INTR(ret = poll(&ufd, 1, 0));
+ if (ret <= 0 || IS_EXCEPTION(ufd.revents))
break;
}
{
int ret;
OSI_NO_INTR(ret = poll(&pfd, 1, 1));
+ if (ret == 0) {
+ BTIF_TRACE_VERBOSE("%s(): poll() timeout - nothing to do. Exiting",
+ __func__);
+ return;
+ }
+ if (ret < 0) {
+ BTIF_TRACE_WARNING("%s() - poll() failed: return %d errno %d (%s). Exiting",
+ __func__, ret, errno, strerror(errno));
+ return;
+ }
BTIF_TRACE_VERBOSE("%s() - polling fd %d, revents: 0x%x, ret %d",
__FUNCTION__, pfd.fd, pfd.revents, ret);
if (pfd.revents & (POLLERR|POLLHUP))
return;
}
- if (ret <= 0)
- {
- BTIF_TRACE_WARNING("%s() - poll() failed (%s). Exiting",
- __FUNCTION__, strerror(errno));
- return;
- }
-
/* read sufficiently large buffer to ensure flush empties socket faster than
it is getting refilled */
read(pfd.fd, &buf, UIPC_FLUSH_BUFFER_SIZE);
BTIF_TRACE_WARNING("poll timeout (%d ms)", uipc_main.ch[ch_id].read_poll_tmo_ms);
break;
}
+ if (poll_ret < 0) {
+ BTIF_TRACE_ERROR("%s(): poll() failed: return %d errno %d (%s)",
+ __func__, poll_ret, errno, strerror(errno));
+ break;
+ }
//BTIF_TRACE_EVENT("poll revents %x", pfd.revents);