From: Moises Silva Date: Wed, 17 Nov 2010 04:41:11 +0000 (-0500) Subject: freetdm: retry polling in DAHDI devices when fails due to interrupted system call X-Git-Tag: v1.2-rc1~265^2~4^2~26 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5486b8c74d9b853cd74229689dc67800cd722c65;p=thirdparty%2Ffreeswitch.git freetdm: retry polling in DAHDI devices when fails due to interrupted system call --- diff --git a/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c b/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c index ddf7b3ffab..b135e61269 100644 --- a/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c +++ b/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c @@ -889,13 +889,18 @@ static FIO_WAIT_FUNCTION(zt_wait) inflags |= POLLPRI; } - +pollagain: memset(&pfds[0], 0, sizeof(pfds[0])); pfds[0].fd = ftdmchan->sockfd; pfds[0].events = inflags; result = poll(pfds, 1, to); *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) { ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "DAHDI device got POLLERR\n"); result = -1;