*** libfcgi/os_unix.c.orig Sat Feb 6 00:08:33 1999 --- libfcgi/os_unix.c Thu May 13 10:32:00 1999 *************** *** 412,420 **** */ int OS_Read(int fd, char * buf, size_t len) { ! return(read(fd, buf, len)); } ! /* *-------------------------------------------------------------- * --- 412,424 ---- */ int OS_Read(int fd, char * buf, size_t len) { ! int result; ! do { ! result = read(fd, buf, len); ! } while((result == -1) && (errno == EINTR)); ! return(result); } ! /* *-------------------------------------------------------------- * *************** *** 433,442 **** */ int OS_Write(int fd, char * buf, size_t len) { ! return(write(fd, buf, len)); } - /* *---------------------------------------------------------------------- * --- 437,449 ---- */ int OS_Write(int fd, char * buf, size_t len) { ! int result; ! do { ! result = write(fd, buf, len); ! } while((result == -1) && (errno == EINTR)); ! return(result); } /* *---------------------------------------------------------------------- * *************** *** 761,768 **** * any work to do. */ if(numRdPosted == 0 && numWrPosted == 0) { ! selectStatus = select((maxFd+1), &readFdSetCpy, &writeFdSetCpy, ! NULL, tmo); if(selectStatus < 0) { exit(errno); } --- 768,777 ---- * any work to do. */ if(numRdPosted == 0 && numWrPosted == 0) { ! do { ! selectStatus = select((maxFd+1), &readFdSetCpy, &writeFdSetCpy, ! NULL, tmo); ! } while ((selectStatus == -1) && (errno == EINTR)); if(selectStatus < 0) { exit(errno); } *************** *** 1020,1030 **** { struct timeval tval = { READABLE_UNIX_FD_DROP_DEAD_TIMEVAL }; fd_set read_fds; FD_ZERO(&read_fds); FD_SET(fd, &read_fds); ! return select(fd + 1, &read_fds, NULL, NULL, &tval) >= 0 && FD_ISSET(fd, &read_fds); } /* --- 1029,1043 ---- { struct timeval tval = { READABLE_UNIX_FD_DROP_DEAD_TIMEVAL }; fd_set read_fds; + int result; FD_ZERO(&read_fds); FD_SET(fd, &read_fds); ! do { ! result = select(fd + 1, &read_fds, NULL, NULL, &tval); ! } while((result == -1) && (errno == EINTR)); ! return result >= 0 && FD_ISSET(fd, &read_fds); } /*