]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: retry polling in DAHDI devices when fails due to interrupted system call
authorMoises Silva <moy@sangoma.com>
Wed, 17 Nov 2010 04:41:11 +0000 (23:41 -0500)
committerMoises Silva <moy@sangoma.com>
Wed, 17 Nov 2010 04:41:11 +0000 (23:41 -0500)
libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c

index ddf7b3ffab4fbffdbbda1023d34f012c982c7db8..b135e61269bcef1409feb9ad6b1b1d02a7169b24 100644 (file)
@@ -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;