]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: try polling again after EINTR
authorMoises Silva <moy@sangoma.com>
Tue, 31 Aug 2010 18:55:11 +0000 (14:55 -0400)
committerMoises Silva <moy@sangoma.com>
Tue, 31 Aug 2010 18:55:11 +0000 (14:55 -0400)
libs/freetdm/src/ftdm_threadmutex.c

index 61051df4ef4055409f6e9d711613d294ac6d5514..79bd28f7d99008f7c30d5ea6a364052b0c5b56e5 100644 (file)
@@ -329,6 +329,7 @@ FT_DECLARE(ftdm_status_t) ftdm_interrupt_wait(ftdm_interrupt_t *interrupt, int m
                return FTDM_SUCCESS;
        }
 #else
+pollagain:
        ints[0].fd = interrupt->readfd;
        ints[0].events = POLLIN;
        ints[0].revents = 0;
@@ -343,6 +344,9 @@ FT_DECLARE(ftdm_status_t) ftdm_interrupt_wait(ftdm_interrupt_t *interrupt, int m
        res = poll(ints, num, ms);
 
        if (res == -1) {
+               if (errno == EINTR) {
+                       goto pollagain;
+               }
                ftdm_log(FTDM_LOG_CRIT, "interrupt poll failed (%s)\n", strerror(errno));
                return FTDM_FAIL;
        }