提交 5486b8c7 authored 作者: Moises Silva's avatar Moises Silva

freetdm: retry polling in DAHDI devices when fails due to interrupted system call

上级 21e1f69b
...@@ -889,13 +889,18 @@ static FIO_WAIT_FUNCTION(zt_wait) ...@@ -889,13 +889,18 @@ static FIO_WAIT_FUNCTION(zt_wait)
inflags |= POLLPRI; inflags |= POLLPRI;
} }
pollagain:
memset(&pfds[0], 0, sizeof(pfds[0])); memset(&pfds[0], 0, sizeof(pfds[0]));
pfds[0].fd = ftdmchan->sockfd; pfds[0].fd = ftdmchan->sockfd;
pfds[0].events = inflags; pfds[0].events = inflags;
result = poll(pfds, 1, to); result = poll(pfds, 1, to);
*flags = 0; *flags = 0;
if (rc < 0 && errno == EINTR) {
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "DAHDI wait got interrupted, trying again\n");
goto pollagain;
}
if (pfds[0].revents & POLLERR) { if (pfds[0].revents & POLLERR) {
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "DAHDI device got POLLERR\n"); ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "DAHDI device got POLLERR\n");
result = -1; result = -1;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论