mirror of
https://github.com/php/php-src.git
synced 2024-09-22 10:27:25 +00:00
Merge branch 'PHP-5.4' into PHP-5.5
* PHP-5.4: Fixed bug #64128 buit-in web server is broken on ppc64.
This commit is contained in:
commit
5d3501c7d4
@ -712,10 +712,9 @@ static void php_cli_server_poller_remove(php_cli_server_poller *poller, int mode
|
||||
if (fd == poller->max_fd) {
|
||||
while (fd > 0) {
|
||||
fd--;
|
||||
if (((unsigned int *)&poller->rfds)[fd / (8 * sizeof(unsigned int))] || ((unsigned int *)&poller->wfds)[fd / (8 * sizeof(unsigned int))]) {
|
||||
if (PHP_SAFE_FD_ISSET(fd, &poller->rfds) || PHP_SAFE_FD_ISSET(fd, &poller->wfds)) {
|
||||
break;
|
||||
}
|
||||
fd -= fd % (8 * sizeof(unsigned int));
|
||||
}
|
||||
poller->max_fd = fd;
|
||||
}
|
||||
@ -774,23 +773,20 @@ static int php_cli_server_poller_iter_on_active(php_cli_server_poller *poller, v
|
||||
}
|
||||
|
||||
#else
|
||||
php_socket_t fd = 0;
|
||||
php_socket_t fd;
|
||||
const php_socket_t max_fd = poller->max_fd;
|
||||
const unsigned int *pr = (unsigned int *)&poller->active.rfds,
|
||||
*pw = (unsigned int *)&poller->active.wfds,
|
||||
*e = pr + (max_fd + (8 * sizeof(unsigned int)) - 1) / (8 * sizeof(unsigned int));
|
||||
unsigned int mask;
|
||||
while (pr < e && fd <= max_fd) {
|
||||
for (mask = 1; mask; mask <<= 1, fd++) {
|
||||
int events = (*pr & mask ? POLLIN: 0) | (*pw & mask ? POLLOUT: 0);
|
||||
if (events) {
|
||||
if (SUCCESS != callback(opaque, fd, events)) {
|
||||
retval = FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
for (fd=0 ; fd<=max_fd ; fd++) {
|
||||
if (PHP_SAFE_FD_ISSET(fd, &poller->active.rfds)) {
|
||||
if (SUCCESS != callback(opaque, fd, POLLIN)) {
|
||||
retval = FAILURE;
|
||||
}
|
||||
}
|
||||
if (PHP_SAFE_FD_ISSET(fd, &poller->active.wfds)) {
|
||||
if (SUCCESS != callback(opaque, fd, POLLOUT)) {
|
||||
retval = FAILURE;
|
||||
}
|
||||
}
|
||||
pr++;
|
||||
pw++;
|
||||
}
|
||||
#endif
|
||||
return retval;
|
||||
|
Loading…
Reference in New Issue
Block a user