From 5486b8c74d9b853cd74229689dc67800cd722c65 Mon Sep 17 00:00:00 2001
From: Moises Silva <moy@sangoma.com>
Date: Tue, 16 Nov 2010 23:41:11 -0500
Subject: [PATCH] freetdm: retry polling in DAHDI devices when fails due to
 interrupted system call

---
 libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

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;