From: Moises Silva Date: Tue, 31 Aug 2010 18:55:11 +0000 (-0400) Subject: freetdm: try polling again after EINTR X-Git-Tag: v1.2-rc1~382^2~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a3b2e91ebfdbddcf5281d21597988b76c28b92fc;p=thirdparty%2Ffreeswitch.git freetdm: try polling again after EINTR --- diff --git a/libs/freetdm/src/ftdm_threadmutex.c b/libs/freetdm/src/ftdm_threadmutex.c index 61051df4ef..79bd28f7d9 100644 --- a/libs/freetdm/src/ftdm_threadmutex.c +++ b/libs/freetdm/src/ftdm_threadmutex.c @@ -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; }