freetdm: try polling again after EINTR
This commit is contained in:
parent
6216d5df07
commit
a3b2e91ebf
|
@ -329,6 +329,7 @@ FT_DECLARE(ftdm_status_t) ftdm_interrupt_wait(ftdm_interrupt_t *interrupt, int m
|
||||||
return FTDM_SUCCESS;
|
return FTDM_SUCCESS;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
pollagain:
|
||||||
ints[0].fd = interrupt->readfd;
|
ints[0].fd = interrupt->readfd;
|
||||||
ints[0].events = POLLIN;
|
ints[0].events = POLLIN;
|
||||||
ints[0].revents = 0;
|
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);
|
res = poll(ints, num, ms);
|
||||||
|
|
||||||
if (res == -1) {
|
if (res == -1) {
|
||||||
|
if (errno == EINTR) {
|
||||||
|
goto pollagain;
|
||||||
|
}
|
||||||
ftdm_log(FTDM_LOG_CRIT, "interrupt poll failed (%s)\n", strerror(errno));
|
ftdm_log(FTDM_LOG_CRIT, "interrupt poll failed (%s)\n", strerror(errno));
|
||||||
return FTDM_FAIL;
|
return FTDM_FAIL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue