summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Zinternal.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/Zinternal.c b/lib/Zinternal.c
index 8efd05a..99b7de2 100644
--- a/lib/Zinternal.c
+++ b/lib/Zinternal.c
@@ -226,10 +226,22 @@ Code_t Z_ReadWait()
char *slash;
Code_t retval;
register int i;
+ fd_set fds;
+ struct timeval tv;
if (ZGetFD() < 0)
return (ZERR_NOPORT);
+ FD_ZERO(&fds);
+ FD_SET(ZGetFD(), &fds);
+ tv.tv_sec = 60;
+ tv.tv_usec = 0;
+
+ if (select(ZGetFD() + 1, &fds, NULL, NULL, &tv) < 0)
+ return (errno);
+ if (!FD_ISSET(ZGetFD(), &fds))
+ return ETIMEDOUT;
+
from_len = sizeof(struct sockaddr_in);
packet_len = recvfrom(ZGetFD(), packet, sizeof(packet), 0,