2000-08-20 21:42:27 +00:00
|
|
|
|
--- libfcgi/os_unix.c.orig Wed Aug 2 05:36:43 2000
|
|
|
|
|
+++ libfcgi/os_unix.c Sun Aug 20 14:32:35 2000
|
|
|
|
|
@@ -404,9 +404,13 @@
|
|
|
|
|
*/
|
|
|
|
|
int OS_Read(int fd, char * buf, size_t len)
|
|
|
|
|
{
|
|
|
|
|
- return(read(fd, buf, len));
|
|
|
|
|
+ int result;
|
|
|
|
|
+ do {
|
|
|
|
|
+ result = read(fd, buf, len);
|
|
|
|
|
+ } while((result == -1) && (errno == EINTR));
|
|
|
|
|
+ return(result);
|
|
|
|
|
}
|
|
|
|
|
-
|
|
|
|
|
+
|
|
|
|
|
/*
|
|
|
|
|
*--------------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
@@ -425,10 +429,13 @@
|
|
|
|
|
*/
|
|
|
|
|
int OS_Write(int fd, char * buf, size_t len)
|
|
|
|
|
{
|
|
|
|
|
- return(write(fd, buf, len));
|
|
|
|
|
+ int result;
|
|
|
|
|
+ do {
|
|
|
|
|
+ result = write(fd, buf, len);
|
|
|
|
|
+ } while((result == -1) && (errno == EINTR));
|
|
|
|
|
+ return(result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
|
/*
|
|
|
|
|
*----------------------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
@@ -753,8 +760,10 @@
|
|
|
|
|
* any work to do.
|
|
|
|
|
*/
|
|
|
|
|
if(numRdPosted == 0 && numWrPosted == 0) {
|
|
|
|
|
- selectStatus = select((maxFd+1), &readFdSetCpy, &writeFdSetCpy,
|
|
|
|
|
- NULL, tmo);
|
|
|
|
|
+ do {
|
|
|
|
|
+ selectStatus = select((maxFd+1), &readFdSetCpy, &writeFdSetCpy,
|
|
|
|
|
+ NULL, tmo);
|
|
|
|
|
+ } while ((selectStatus == -1) && (errno == EINTR));
|
|
|
|
|
if(selectStatus < 0) {
|
|
|
|
|
exit(errno);
|
|
|
|
|
}
|
|
|
|
|
@@ -1020,11 +1029,15 @@
|
|
|
|
|
{
|
|
|
|
|
struct timeval tval = { READABLE_UNIX_FD_DROP_DEAD_TIMEVAL };
|
|
|
|
|
fd_set read_fds;
|
|
|
|
|
+ int result;
|
|
|
|
|
|
|
|
|
|
FD_ZERO(&read_fds);
|
|
|
|
|
FD_SET(fd, &read_fds);
|
|
|
|
|
|
|
|
|
|
- return select(fd + 1, &read_fds, NULL, NULL, &tval) >= 0 && FD_ISSET(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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|