From 4e5ad6d5ee9e72ddf6550a6795c18039b265e501 Mon Sep 17 00:00:00 2001 From: Diego Nehab Date: Mon, 29 Nov 2004 06:55:47 +0000 Subject: Bug in poll. Debug garbage in compat-5.1.c. Improvements to the user manual. --- src/usocket.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/usocket.c b/src/usocket.c index 2143c7d..c1ab725 100644 --- a/src/usocket.c +++ b/src/usocket.c @@ -16,7 +16,7 @@ /*-------------------------------------------------------------------------*\ * Wait for readable/writable/connected socket with timeout \*-------------------------------------------------------------------------*/ -#ifndef SOCK_SELECT +#ifdef SOCK_POLL #include #define WAITFD_R POLLIN @@ -29,8 +29,10 @@ static int sock_waitfd(int fd, int sw, p_tm tm) { pfd.events = sw; pfd.revents = 0; if (tm_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */ - do ret = poll(&pfd, 1, (int)(tm_getretry(tm)*1e3)); - while (ret == -1 && errno == EINTR); + do { + int t = (int)(tm_getretry(tm)*1e3); + ret = poll(&pfd, 1, t >= 0? t: -1); + } while (ret == -1 && errno == EINTR); if (ret == -1) return errno; if (ret == 0) return IO_TIMEOUT; if (sw == WAITFD_C && (pfd.revents & (POLLIN|POLLERR))) return IO_CLOSED; -- cgit v1.2.3-55-g6feb