Skip to content

Commit c50edf1

Browse files
committed
fastcgi: Use php_pollfd_for_ms for single fd
This also handles the case where poll isn't available (does that even matter nowadays?)
1 parent 79178c9 commit c50edf1

1 file changed

Lines changed: 2 additions & 37 deletions

File tree

main/fastcgi.c

Lines changed: 2 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,6 @@ static int is_impersonate = 0;
6868
# include <netdb.h>
6969
# include <signal.h>
7070

71-
# if defined(HAVE_POLL_H) && defined(HAVE_POLL)
72-
# include <poll.h>
73-
# elif defined(HAVE_SYS_POLL_H) && defined(HAVE_POLL)
74-
# include <sys/poll.h>
75-
# endif
76-
# if defined(HAVE_SYS_SELECT_H)
77-
# include <sys/select.h>
78-
# endif
79-
8071
#ifndef INADDR_NONE
8172
#define INADDR_NONE ((unsigned long) -1)
8273
#endif
@@ -1426,42 +1417,16 @@ int fcgi_accept_request(fcgi_request *req)
14261417
break;
14271418
#else
14281419
if (req->fd >= 0) {
1429-
#if defined(HAVE_POLL)
1430-
struct pollfd fds;
14311420
int ret;
14321421

1433-
fds.fd = req->fd;
1434-
fds.events = POLLIN;
1435-
fds.revents = 0;
14361422
do {
14371423
errno = 0;
1438-
ret = poll(&fds, 1, 5000);
1424+
ret = php_pollfd_for_ms(req->fd, POLLIN, 5000);
14391425
} while (ret < 0 && errno == EINTR);
1440-
if (ret > 0 && (fds.revents & POLLIN)) {
1426+
if (ret & POLLIN) {
14411427
break;
14421428
}
14431429
fcgi_close(req, 1, 0);
1444-
#else
1445-
if (req->fd < FD_SETSIZE) {
1446-
struct timeval tv = {5,0};
1447-
fd_set set;
1448-
int ret;
1449-
1450-
FD_ZERO(&set);
1451-
FD_SET(req->fd, &set);
1452-
do {
1453-
errno = 0;
1454-
ret = select(req->fd + 1, &set, NULL, NULL, &tv) >= 0;
1455-
} while (ret < 0 && errno == EINTR);
1456-
if (ret > 0 && FD_ISSET(req->fd, &set)) {
1457-
break;
1458-
}
1459-
fcgi_close(req, 1, 0);
1460-
} else {
1461-
fcgi_log(FCGI_ERROR, "Too many open file descriptors. FD_SETSIZE limit exceeded.");
1462-
fcgi_close(req, 1, 0);
1463-
}
1464-
#endif
14651430
}
14661431
#endif
14671432
}

0 commit comments

Comments
 (0)